LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

.NET 中如何实现 Web API 标准化响应模型

admin
2024年11月22日 14:32 本文热度 72

前言

随着微服务的不断发展,开发 Web API 并提供一致且清晰的响应模型对开发人员和用户都至关重要。标准化的响应不仅使可以使用 API 更易于使用,而且还能提高其可维护性。本文将探讨在 .NET Core Web API 创建标准化响应的过程,实现管理 API 响应和处理错误的实例。

标准响应模型

一致性的 API 响应对于 Web APP 很关键。引入标准化响应模型可确保请求端以预测的格式接收响应,无论请求是否成功。现在从定义一个标准模型(ResponseModel<T>)开始,该模型封装了成功和错误场景。

标准响应模型通常包括以下内容:

  • Status(状态): 表示请求是否成功或是否发生错误;

  • Message(消息): 提供与响应有关的其他信息,这可为调试和了解结果提供帮助;

  • Data(数据): 包含 API 返回的实际数据;

  • Exception(异常信息): 当请求不成功,提供所有错误详细信息;


    定义标准化响应模型的简单示例:

    public class ResponseModel<T>{    /// <summary>    /// 状态    /// </summary>    public bool Status { get; set; }    /// <summary>    /// 消息    /// </summary>    public string Message { get; set; }    /// <summary>    /// 保存响应数据    /// </summary>    public T Data { get; set; }    /// <summary>    /// 异常    /// </summary>    public List<string> Errors { get; set; }    /// <summary>    ///     /// </summary>    public ResponseModel()    {        Status = true;    }}

    模型实现步骤

    1、创建响应标准模型类

    定义一个可以处理不同类型数据的泛型类ResponseModel<T>,其包括 Status、Message、Data、Errors 等属性。可参考上面的示例。

    2、在 Controller 服务中实现响应模型

    定义Customer服务的Controller类,方法分别是GetCustomerById 和 CreateCustomer。这二个方法分别为 GET API 的方法与POST API 的方法。

    • 定义一个 Customer 实体类

    public class CustomerModel{    /// <summary>    /// ID    /// </summary>    public int CustomerId {get; set;}    /// <summary>    /// 名称    /// </summary>    public string CustomerName {get; set;}    /// <summary>    /// 简称    /// </summary>    public string CustomerShort {get; set;}    /// <summary>    /// 城市    /// </summary>    public string City {get; set;}    /// <summary>    /// 等级    /// </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 = "客户档案不存在";                    // 返回响应                    return NotFound(response);                }
                   response.Status = true;                response.Message = "Success";                response.Data = item;                // 返回响应                return Ok(response);            }            catch (Exception ex)            {                response.Status = false;                response.Message = "Failure";                List<string> error = new List<string>();                error.Add(ex.Message);                // 返回响应                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);                // 返回响应                response.Errors = error;                return StatusCode(500, response);            }        }    }}

    3、简单说明

    ResponseModel 使用泛型的设计,允许响应模型处理任何类型的数据,使其具有极强的通用性和可重用性。无论您的 API 需要返回简单字符串、复杂对象还是项目集合,通用数据类型参数 <T> 都可以确保标准响应模型可以无缝地适应它。

    小结

    以上是 ASP.NET Core Web API ,使用 C# 实现标准响应模型的具体步骤。通过使用标准响应可以增强用户体验、简化调试并确保Web API的可靠性。希望本文对您有所收获,如有不到之处,请多多包涵。


    该文章在 2024/11/22 17:03:14 编辑过
    关键字查询
    相关文章
    正在查询...
    点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
    点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
    点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
    点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
    Copyright 2010-2024 ClickSun All Rights Reserved