系列導航及源代碼
需求
在HTTP請求中,我們還剩下兩類不常使用的請求沒有講到,本文就來實現以下關於OPTIONS
和HEAD
請求。OPTIONS
請求用來貨哦去關於某個特定的URI
能夠允許執行的請求類型,而HEAD
請求可以理解為不實際獲取返回結果的GET
請求,通常用於校驗資源接口、測試資源可達性或者測試資源最近的改動。
目標
實現OPTIONS
和HEAD
請求響應。
原理與思路
在.NET Web API項目中,我們只需要在Controller請求上方加入對應的請求方法,再按要求對應填充Header里的相關字段即可。
實現
實現OPTIONS請求
我們在TodoItemController
中加入一個新的Action,並使用HttpOptions
來標記該Action:
TodoItemController.cs
// 省略其他...
[HttpOptions]
public Task<ApiResponse<string>> GetTodoItemsOptions()
{
Response.Headers.Add("Allow", "GET, OPTIONS, POST, PUT");
return Task.FromResult(ApiResponse<string>.Success(""));
}
實現HEAD請求
對於HEAD請求,我們直接在GetTodoItemsWithCondition
上添加HttpHead
即可:
TodoItemController.cs
// 省略其他...
[HttpHead]
[HttpGet]
public async Task<ApiResponse<PaginatedList<ExpandoObject>>> GetTodoItemsWithCondition([FromQuery] GetTodoItemsWithConditionQuery query)
{
return ApiResponse<PaginatedList<ExpandoObject>>.Success(await _mediator.Send(query));
}
驗證
驗證OPTIONS請求
啟動Api
項目,執行OPTIONSTodoItem
的請求:
-
請求
-
響應
驗證HEAD請求
啟動Api
項目,執行HEADTodoItem
的請求:
-
請求
-
響應
HEAD請求實際已經被執行了,只不過並沒有填充響應體數據。
總結
關於這兩種請求,我們在項目中使用的較少,所以只做簡單的演示。我會對系列內容進行一些順序上的調整,關於HATEOAS
和Root Document
相關的內容放到最后再來介紹,因為實際使用過程中涉及到的很少。下一篇文章我們將介紹關於API版本管理的相關知識。