ASP.NET Core 中的 IHttpActionResult 和辅助方法
IHttpActionResult and helper methods in ASP.NET Core
我正在尝试将我的网站 api 2 项目移动到 ASP.NET 5。
但是我有很多元素已经不存在了。
例如 IHttpActionResult
或 Ok(), NotFound()
方法。
或者 RoutePrefix
[]
我应该将每个 IHttpActionResult
更改为 IActionResult
吗?
将 Ok
() 更改为 new ObjectResult
? (是一样的吗?)
startup.cs 中似乎不再存在的 HttpConfiguration
呢?
IHttpActionResult
现在实际上是 IActionResult
,对于 return 一个带有 return 对象的 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
已更新回复
我看到有人在评论中提到了 WebApiCompatShim
。
WebApiCompatShim
仍然针对这种可移植性场景进行维护,现已发布 1.1.0。
我看到 Microsoft.AspNetCore.OData 1.0.0-rtm-00011
有 WebApiCompatShim
作为依赖项。我不知道他们在这方面到底想达到什么目的,这些只是事实。
如果您不想获得另一个兼容包,并且正在研究更多的重构工作,您可以查看以下方法:
您仍然可以使用 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);
}
在 2.2 中,ASP.NET 核心迁移指南指出要用 ActionResult 替换 IHttpActionResult。这对我有用:
[Produces("application/json")]
[HttpPost]
public ActionResult GetSomeTable([FromBody] GridState state)
{
return Ok(new
{
data = query.ToList(),
paging = new
{
Total = total,
Limit = state.limit,
page = state.page,
Returned = query.Count()
}
});
}
我正在尝试将我的网站 api 2 项目移动到 ASP.NET 5。 但是我有很多元素已经不存在了。
例如 IHttpActionResult
或 Ok(), NotFound()
方法。
或者 RoutePrefix
[]
我应该将每个 IHttpActionResult
更改为 IActionResult
吗?
将 Ok
() 更改为 new ObjectResult
? (是一样的吗?)
startup.cs 中似乎不再存在的 HttpConfiguration
呢?
IHttpActionResult
现在实际上是 IActionResult
,对于 return 一个带有 return 对象的 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
已更新回复
我看到有人在评论中提到了 WebApiCompatShim
。
WebApiCompatShim
仍然针对这种可移植性场景进行维护,现已发布 1.1.0。
我看到 Microsoft.AspNetCore.OData 1.0.0-rtm-00011
有 WebApiCompatShim
作为依赖项。我不知道他们在这方面到底想达到什么目的,这些只是事实。
如果您不想获得另一个兼容包,并且正在研究更多的重构工作,您可以查看以下方法:
您仍然可以使用 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);
}
在 2.2 中,ASP.NET 核心迁移指南指出要用 ActionResult 替换 IHttpActionResult。这对我有用:
[Produces("application/json")]
[HttpPost]
public ActionResult GetSomeTable([FromBody] GridState state)
{
return Ok(new
{
data = query.ToList(),
paging = new
{
Total = total,
Limit = state.limit,
page = state.page,
Returned = query.Count()
}
});
}