[英]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.