使用.NET 6開發TodoList應用(19)——處理OPTION和HEAD請求


系列導航及源代碼

需求

在HTTP請求中,我們還剩下兩類不常使用的請求沒有講到,本文就來實現以下關於OPTIONSHEAD請求。OPTIONS請求用來貨哦去關於某個特定的URI能夠允許執行的請求類型,而HEAD請求可以理解為不實際獲取返回結果的GET請求,通常用於校驗資源接口、測試資源可達性或者測試資源最近的改動。

目標

實現OPTIONSHEAD請求響應。

原理與思路

在.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的請求:

  • 請求
    image

  • 響應
    image

驗證HEAD請求

啟動Api項目,執行HEADTodoItem的請求:

  • 請求
    image

  • 響應
    image

HEAD請求實際已經被執行了,只不過並沒有填充響應體數據。

總結

關於這兩種請求,我們在項目中使用的較少,所以只做簡單的演示。我會對系列內容進行一些順序上的調整,關於HATEOASRoot Document相關的內容放到最后再來介紹,因為實際使用過程中涉及到的很少。下一篇文章我們將介紹關於API版本管理的相關知識。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM