【C#/.NET】RESTful風格的Post請求與CreateAtAction

2023-07-05 21:00:34

 目錄

 

引言

實現步驟

概念介紹

建立控制器

總結


 

引言

        在構建Web應用程式時,遵循RESTful風格的API設計原則能夠使我們的系統更加靈活、可延伸和易於維護。其中,Post請求在建立資源時起重要作用。本文將介紹如何在.NET WebApi中使用CreateAtAction來實現RESTful風格的Post請求。

實現步驟

概念介紹

        建立資源的Post請求: 在RESTful架構中,使用Post請求來建立新資源。以下是一些實現RESTful風格的Post請求的技術要點:

  • 使用POST動詞傳送請求;
  • 在請求的主體中傳送要建立的資源的表示形式(通常使用JSON或XML);
  • 返回狀態碼201(Created),表示資源已成功建立;
  • 在響應頭中包含新資源的位置URL。

建立控制器

建立一個控制器,並新增一個Post方法,用於處理Post請求:

[Route("api/[controller]")]
[ApiController]
public class RestfulController : ControllerBase
{
    [HttpPost]
    public ActionResult<Model> Post([FromBody] Model model)
    {
        // 處理建立資源的邏輯
        // 返回建立成功的響應,幷包含新資源的位置
        return CreatedAtAction(nameof(Get), new { id = model.Id }, model);
    }

    [HttpGet("{id}")]
    public ActionResult<Model> Get(int id)
    {
        // 使用id查詢
        return new Model(1, "bob");
    }
}
public record Model(int Id,string Name);

 

        在上面的範例中,我們使用了[ApiController]和[Route("api/[controller]")]屬性來標註控制器和路由。[ApiController]屬性確保請求的有效性,並自動處理模型繫結和驗證。[Route("api/[controller]")]屬性定義了API的基礎路由,可以替換為你的具體路由。

        在Post方法中,我們使用[FromBody]屬性將請求體中的資料繫結到Model。你可以根據自己的需求來選擇合適的模型。

        處理完建立資源的邏輯後,我們通過CreateAtAction方法返回建立成功的響應。CreateAtAction方法接受三個引數:Action名稱、路由引數、返回的資源物件。在這裡,我們使用"Get"作為Action名稱,表示獲取剛建立的資源的詳細資訊。路由引數使用一個匿名物件表示,這個物件包含新資源的唯一識別符號(在這個例子中是model.Id)。

在Postman中的效果

 

 

  響應頭包含"Location"指向新資源的URL符合RESTful風格的介面自描述的概念, 介面自描述是指API能夠提供關於其功能和用法的詳細資訊。它可以幫助開發者更好地理解如何使用API,減少開發時間和偵錯錯誤的時間。當一個介面請求完成之後,能夠自描述接下來可能的操作並提供檔案。

        建立成功的響應將包含狀態碼201(Created),並會在響應頭中包含"Location"欄位,指向新資源的URL。

        通過以上步驟,我們成功實現了用CreateAtAction方法返回建立成功的Post請求響應。這樣,我們的API遵循了RESTful風格,並且符合了HTTP標準。

總結

        使用.NET WebApi的CreateAtAction方法可以很方便地返回建立資源的成功響應,幷包含新資源的位置。通過遵循RESTful風格的設計原則,我們能夠設計出更加靈活和可延伸的Web應用程式。