超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

.NET 中如何實(shí)現(xiàn) Web API 標(biāo)準(zhǔn)化響應(yīng)模型

admin
2024年11月22日 14:32 本文熱度 1243

前言

隨著微服務(wù)的不斷發(fā)展,開發(fā) Web API 并提供一致且清晰的響應(yīng)模型對(duì)開發(fā)人員和用戶都至關(guān)重要。標(biāo)準(zhǔn)化的響應(yīng)不僅使可以使用 API 更易于使用,而且還能提高其可維護(hù)性。本文將探討在 .NET Core Web API 創(chuàng)建標(biāo)準(zhǔn)化響應(yīng)的過程,實(shí)現(xiàn)管理 API 響應(yīng)和處理錯(cuò)誤的實(shí)例。

標(biāo)準(zhǔn)響應(yīng)模型

一致性的 API 響應(yīng)對(duì)于 Web APP 很關(guān)鍵。引入標(biāo)準(zhǔn)化響應(yīng)模型可確保請(qǐng)求端以預(yù)測(cè)的格式接收響應(yīng),無論請(qǐng)求是否成功?,F(xiàn)在從定義一個(gè)標(biāo)準(zhǔn)模型(ResponseModel<T>)開始,該模型封裝了成功和錯(cuò)誤場(chǎng)景。

標(biāo)準(zhǔn)響應(yīng)模型通常包括以下內(nèi)容:

  • Status(狀態(tài)): 表示請(qǐng)求是否成功或是否發(fā)生錯(cuò)誤;

  • Message(消息): 提供與響應(yīng)有關(guān)的其他信息,這可為調(diào)試和了解結(jié)果提供幫助;

  • Data(數(shù)據(jù)): 包含 API 返回的實(shí)際數(shù)據(jù);

  • Exception(異常信息): 當(dāng)請(qǐng)求不成功,提供所有錯(cuò)誤詳細(xì)信息;


    定義標(biāo)準(zhǔn)化響應(yīng)模型的簡(jiǎn)單示例:

    public class ResponseModel<T>{    /// <summary>    /// 狀態(tài)    /// </summary>    public bool Status { get; set; }    /// <summary>    /// 消息    /// </summary>    public string Message { get; set; }    /// <summary>    /// 保存響應(yīng)數(shù)據(jù)    /// </summary>    public T Data { get; set; }    /// <summary>    /// 異常    /// </summary>    public List<string> Errors { get; set; }    /// <summary>    ///     /// </summary>    public ResponseModel()    {        Status = true;    }}

    模型實(shí)現(xiàn)步驟

    1、創(chuàng)建響應(yīng)標(biāo)準(zhǔn)模型類

    定義一個(gè)可以處理不同類型數(shù)據(jù)的泛型類ResponseModel<T>,其包括 Status、Message、Data、Errors 等屬性。可參考上面的示例。

    2、在 Controller 服務(wù)中實(shí)現(xiàn)響應(yīng)模型

    定義Customer服務(wù)的Controller類,方法分別是GetCustomerById 和 CreateCustomer。這二個(gè)方法分別為 GET API 的方法與POST API 的方法。

    • 定義一個(gè) Customer 實(shí)體類

    public class CustomerModel{    /// <summary>    /// ID    /// </summary>    public int CustomerId {get; set;}    /// <summary>    /// 名稱    /// </summary>    public string CustomerName {get; set;}    /// <summary>    /// 簡(jiǎn)稱    /// </summary>    public string CustomerShort {get; set;}    /// <summary>    /// 城市    /// </summary>    public string City {get; set;}    /// <summary>    /// 等級(jí)    /// </summary>    public string Grade {get; set;}}

    • GET API  模式的 GetCustomerById

    using Microsoft.AspNetCore.Mvc;
    namespace Fountain.WebAPI.JwtTokenDemo.Controllers{    [Route("api/[controller]")]    [ApiController]    public class CustomerController : ControllerBase    {        /// <summary>        ///        /// </summary>            [HttpGet("{id}")]        public async Task<IActionResult> GetCustomerById(int id)        {            ResponseModel<CustomerModel> response = new ResponseModel<CustomerModel>();
               try            {                CustomerModel item = await itemService.GetItemByIdAsync(id);                if (item == null)                {                    response.Status = false;                    response.Message = "客戶檔案不存在";                    // 返回響應(yīng)                    return NotFound(response);                }
                   response.Status = true;                response.Message = "Success";                response.Data = item;                // 返回響應(yīng)                return Ok(response);            }            catch (Exception ex)            {                response.Status = false;                response.Message = "Failure";                List<string> error = new List<string>();                error.Add(ex.Message);                // 返回響應(yīng)                response.Errors = error;                return StatusCode(500, response);            }        }    }}

    • POST API  模式的 CreateCustomer

    using Microsoft.AspNetCore.Mvc;
    namespace Fountain.WebAPI.JwtTokenDemo.Controllers{    [Route("api/[controller]")]    [ApiController]    public class CustomerController : ControllerBase    {        [HttpPost]        public async Task<IActionResult> CreateCustomer(CustomerModel customer)        {            ResponseModel<string> response = new ResponseModel<string>();            try            {                itemService.CreateCustomer(customer);                response.Data = null;                response.Status = true;                response.Message = "success";                return Ok(response);            }            catch (Exception ex)            {                response.Status = false;                response.Message = "Failure";                response.Data = null;                List<string> error = new List<string>();                error.Add(ex.Message);                // 返回響應(yīng)                response.Errors = error;                return StatusCode(500, response);            }        }    }}

    3、簡(jiǎn)單說明

    ResponseModel 使用泛型的設(shè)計(jì),允許響應(yīng)模型處理任何類型的數(shù)據(jù),使其具有極強(qiáng)的通用性和可重用性。無論您的 API 需要返回簡(jiǎn)單字符串、復(fù)雜對(duì)象還是項(xiàng)目集合,通用數(shù)據(jù)類型參數(shù) <T> 都可以確保標(biāo)準(zhǔn)響應(yīng)模型可以無縫地適應(yīng)它。

    小結(jié)

    以上是 ASP.NET Core Web API ,使用 C# 實(shí)現(xiàn)標(biāo)準(zhǔn)響應(yīng)模型的具體步驟。通過使用標(biāo)準(zhǔn)響應(yīng)可以增強(qiáng)用戶體驗(yàn)、簡(jiǎn)化調(diào)試并確保Web API的可靠性。希望本文對(duì)您有所收獲,如有不到之處,請(qǐng)多多包涵。


    該文章在 2024/11/22 17:03:14 編輯過
    關(guān)鍵字查詢
    相關(guān)文章
    正在查詢...
    點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
    點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
    點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
    點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
    Copyright 2010-2025 ClickSun All Rights Reserved