[英]Azure functions: Cannot bind parameter '_return' to type HttpResponseMessage
[英]Azure Functions - Difference between return type HttpResponseMessage and IActionResult
我创建了 Http 触发器 Azure Function ,其默认返回类型是Task<IActionResult>
。
如果我将其更改为Task<HttpResponseMessage>
有什么区别吗?
Azure function 与Task<IActionResult>
返回类型:
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
Azure function 与Task<HttpResponseMessage>
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]
HttpRequestMessage message,
如果我将
Task<IActionResult>
更改为Task<HttpResponseMessage>
有什么区别吗?
您可以使用Task<HttpResponseMessage>
作为 function 的返回类型。 执行它应该没有问题。
话虽如此,使用两者的区别在于您从 function 返回响应的方式。
IActionResult
类型的响应的情况下,构建响应时要编写的代码更少,它使单元测试更简单。HttpResponseMessage
对通过网络发送的 Http 响应消息提供了更多控制。就像旁注一样,
在HttpTrigger
Azure function v1.0
中,类型Task<HttpResponseMessage>
和HttpRequestMessage
分别用作返回类型和请求类型的默认值。
从v2.0
开始, Task<IActionResult>
和HttpRequest
类型分别用作默认返回类型和请求类型,因为它符合 .net 核心 API 结构。
使用IHttpActionResult
接口有两个主要优点。
你可以在这里看到。
static List<Student> students = new List<Student>()
{
new Student() { Id = 1, Name = "Tom" },
new Student() { Id = 2, Name = "Sam" },
new Student() { Id = 3, Name = "John" }
};
public IHttpActionResult Get()
{
return Ok(students);
}
public HttpResponseMessage Get(int id)
{
var student = students.FirstOrDefault(s => s.Id == id);
if (student == null)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound,
"Student not found");
}
return Request.CreateResponse(student);
}
所有这些方法都返回一个实现IHttpActionResult
接口的类型。
BadRequest()
Conflict()
Created()
InternalServerError()
Redirect()
Unauthorized()
我参考了这个链接https://csharp-video-tutorials.blogspot.com/2017/02/ihttpactionresult-vs-httpresponsemessage.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.