當前位置: 華文頭條 > 推薦

Asp.net6 Restful參數傳遞

2024-03-24推薦

摘要

Asp.net 是一種流行的 Web 開發框架,它可以幫助開發者快速構建 Web 應用程式。在 Asp.net 中,使用者可以透過多種方式向 Web 應用程式傳遞參數。

可以使用 URL 傳遞參數。透過在 URL 中添加參數,使用者可以在瀏覽器中直接存取這些參數,而無需透過表單或 POST 報文進行傳遞。但是,需要註意的是,參數的長度是有限制的,一般情況下為 2048 個字元。

可以使用 QueryString 傳遞參數。QueryString 是一種透過 URL 傳遞參數的方式,它會將參數作為 URL 的一部份傳遞給瀏覽器。與 URL 傳遞參數相比,QueryString 更為靈活,但同樣也存在參數長度的限制。

可以使用 POST 報文傳遞參數。與 GET 和 DELETE 報文不同,POST 報文支持傳遞參數。使用 POST 報文傳遞參數時,可以透過在請求體中添加參數,而不需要在 URL 中傳遞參數。這種方式比較靈活,且沒有參數長度的限制。

範例

Equipment類

public class Equipment{ public string Name { get; set; } public string Description { get; set; } public double Weight { get; set; }}

EquipmentController 類

  • 對於保存、更新類的請求POST、PUT請求,把全部參數都放到請求報文體中
  • 對於DELETE請求,要傳遞的參數就是一個資源的id,因此把參數放到QueryString中即可
  • 對於GET請求,一般透過QueryString傳遞參數就可以
  • 下面是對你提供的EquipmentController程式碼加上註釋的版本,解釋每個操作的用途和如何透過HTTP請求與之互動:

    // 定義路由字首,所有這個控制器中的方法都會基於"api/Equipment"這個URL來存取[Route("api/[controller]")]// 表明這個類是一個API控制器[ApiController]public class EquipmentController : ControllerBase{ // 定義一個GET方法,用於獲取器材名稱 // 存取例子: GET /api/equipment [HttpGet] public string GetName() { return "PLC 1200"; // 返回器材名稱 } // 定義一個POST方法,用於保存器材資訊到數據庫 // 存取例子: POST /api/equipment,請求體中包含器材的JSON數據 [HttpPost] public bool Save(Equipment equipment) { // 假設這裏有程式碼將器材資訊保存到數據庫 return true; // 假設保存成功,返回true } // 定義一個DELETE方法,用於根據ID刪除器材 // 存取例子: DELETE /api/equipment?id=1,透過查詢字串傳遞器材ID [HttpDelete] public bool Delete(int id) { // 假設這裏有程式碼根據ID刪除器材 return true; // 假設刪除成功,返回true } // 定義一個PATCH方法,用於部份更新器材資訊 // 存取例子: PATCH /api/equipment,請求體中包含要更新的器材的JSON數據 [HttpPatch] public bool Patch(Equipment equipment) { // 假設這裏有程式碼部份更新器材資訊 return true; // 假設更新成功,返回true } // 定義另一個PATCH方法,用於更新器材狀態,透過路由"Status"來區分 // 存取例子: PATCH /api/equipment/status,請求體中包含要更新的器材的JSON數據 [HttpPatch] [Route("Status")] public bool UpdateStatus(Equipment equipment) { // 假設這裏有程式碼更新器材狀態 return true; // 假設更新成功,返回true } // 定義一個PUT方法,用於完整更新器材資訊 // 存取例子: PUT /api/equipment,請求體中包含要更新的完整器材的JSON數據 [HttpPut] public bool Put(Equipment equipment) { // 假設這裏有程式碼完整更新器材資訊 return true; // 假設更新成功,返回true }}

    這個EquipmentController類別定義了一組API,允許透過HTTP請求對器材進行增刪改查(CRUD)操作。每個操作都對應一個HTTP方法(GET, POST, DELETE, PATCH, PUT),並且有的操作透過特定的路由(如"Status")來進一步區分。這樣的設計使得API的使用和理解變得直觀和簡單。

    在ASP.NET中構建RESTful Web服務時,參數傳遞是一個核心概念,它允許客戶端向伺服器發送資訊,以便執行特定的操作,如檢索、建立、更新或刪除資源。ASP.NET提供了多種方式來傳遞參數,這些方式適用於不同的場景和需求。以下是在ASP.NET RESTful服務中常見的幾種參數傳遞方法:

    1. 透過URL路徑傳遞參數

    這種方法通常用於GET請求,以獲取特定資源的資訊。參數直接嵌入到URL路徑中。

    範例 :

    [HttpGet("{id}")]public IActionResult GetItem(int id){ // 透過id獲取專案}

    請求範例: GET http://example.com/api/items/1

    2. 透過查詢字串傳遞參數

    查詢字串參數適用於傳遞可選的搜尋或過濾條件,通常與GET請求一起使用。

    範例 :

    [HttpGet]public IActionResult GetItems(string name, int? age){ // 根據name和age獲取專案列表}

    請求範例: GET http://example.com/api/items?name=John&age=30

    3. 透過請求體傳遞參數

    對於POST和PUT請求,通常需要傳遞復雜的數據結構或大量數據,這時可以透過請求體傳遞參數。請求體中的數據通常以JSON或XML格式發送。

    範例 (JSON):

    [HttpPost]public IActionResult CreateItem([FromBody] ItemModel item){ // 建立新專案}

    請求範例: POST http://example.com/api/items,請求體包含JSON數據。

    4. 透過請求頭傳遞參數

    有時,可能需要透過請求頭(Headers)傳遞某些參數,如身份驗證令牌或API版本資訊。

    範例 :

    在客戶端請求中設定請求頭:

    GET /api/items HTTP/1.1Host: example.comAuthorization: Bearer YOUR_ACCESS_TOKEN

    在伺服端,你可以透過檢查請求頭來獲取這些參數。

    5. 透過路由參數傳遞參數

    ASP.NET Core支持在路由樣版中定義參數,這樣可以在URL的路徑部份傳遞參數。

    範例 :

    [HttpGet("users/{userId}/items/{itemId}")]public IActionResult GetUserItem(int userId, int itemId){ // 根據userId和itemId獲取特定使用者的專案}

    請求範例: GET http://example.com/api/users/123/items/456

    這些方法可以根據需要單獨使用,也可以組合使用,以滿足不同的業務場景和需求。選擇合適的參數傳遞方式有助於設計清晰、易於使用的API。