2015-05-28 2 views
27

Я пытаюсь переместить мой проект api 2 в ASP.NET 5. Но у меня есть много элементов, которых больше нет.IHttpActionResult и вспомогательные методы в ASP.NET Core

Например, IHttpActionResult или Ok(), NotFound() методы. или RoutePrefix []

Следует ли менять каждый IHttpActionResult с помощью IActionResult? Ok() new ObjectResult? (это то же самое?)

Как насчет HttpConfiguration, что кажется не более присутствующим в стартапе.cs?

+0

Даже если есть 'WebApiComatShim' пакет в MVC 6 для такого рода переносимостью сценариев, его не рекомендуется использовать, так что я бы предложил использовать новый способ делать вещи MVC 6 , –

+0

Что касается HttpConfiguration, посмотрели, как выглядит новый 'Startup.cs'? Можете ли вы попробовать переместить его там? –

+0

новый способ mvc 6 делает это ... ok, но возвращает Ok (mydata), эквивалентный возврату нового ObjectResult (mydata) {StatusCode = 200}; ? – Tim

ответ

43

IHttpActionResult теперь эффективно IActionResult и вернуть Ok с обратным объектом, вы будете использовать return new ObjectResult(...);

Так эффективно что-то вроде этого:

public IActionResult Get(int id) 
{ 
    if (id == 1) return HttpNotFound("not found!"); 
    return new ObjectResult("value: " + id); 
} 

Вот хорошая статья с более подробно:

http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6

+13

Не следует ли ему использовать 'return Ok (" value "+ id)'? 'Ok()' все еще существует и представляется разумным способом представления ответа 200-Ok от API. – CesarD

+3

@CesarD да в последних выпусках он вернулся к 'NotFound',' Ok' и т. Д. – Sean

+7

ссылка не работает ... – Alex

4

Обновлено ответ-ish

Я видел, что кто-то ссылался на WebApiCompatShim в комментарии.

WebApiCompatShim по-прежнему поддерживается для таких типов переносимости, и теперь он выпущен 1.1.0.

Я видел, что Microsoft.AspNetCore.OData 1.0.0-rtm-00011 имеет WebApiCompatShim как зависимость. Я не знаю точно, чего они пытаются достичь в этой области, это всего лишь факты.

Если вы не в получении другой пакет совместимости и вы ищете в более рефакторинга работы, вы можете посмотреть на следующем подходе: WebApiCompatShim - how to configure for a REST api with MVC 6

Вы все еще будете иметь возможность использовать Ok() или вы можете попробовать используйте метод OkObjectResult(), поскольку слово Http было удалено, чтобы не быть слишком подробным. HttpOkObjectResult ->OkObjectResult

[HttpPost] 
public ObjectResult Post([FromBody]string value) 
{ 
    var item = new {Name= "test", id=1}; 
    return new OkObjectResult(item); 
} 


[HttpPost] 
public ObjectResult Post([FromBody]string value) 
{ 
    var item = new {Name= "test", id=1}; 
    return Ok(item); 
} 
Смежные вопросы