WebAPI接口开发实践

背景

在团队两年多陆续负责了几个项目的开发上线已经代码的review,特别是对老项目的重构过程中,发现之前的API设计是没有任何规范和约定的,不同的开发同学有不同的习惯,因此需要一套规范去约定,现在分享一下我们目前试运行的一套规范,一起交流完善下。

WebAPI开发流程

  • 第一步首先设计接口文档,公司内部有一套自研的多人协作文档系统,可以很好的做到这一步,并能很好的做好版本控制。如果公司内部没有可以基于showdoc搭建一套
  • 第二步有技术负责人确认接口以及字段的命名规范
  • 第三步找对应API对接人,确认接口是否符合要求

    这三步其实是个闭环,只有等到全部通过后才会正式开始开发API

命名规范

  • 所有接口中不能出现拼音,统一用英语
  • 不能有特殊字符,例如/
  • 接口命名遵循像个原则: 简单 易懂

    出入参规范

  • 命名规范参考之前的一篇文章
  • 若需要使用分割符,只可以使用中划线 -
  • 禁止把所有数据库字段全部返回,统一使用Dto,只返回调用方需要的字段

    HTTP 请求方法使用规范

根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
这里统一只是用 GET, POST,PUT,DELETE,PATCH

GET(SELECT): 从服务器获取单个资源或者资源列表
POST(CREATE):发送请求创建一个新的资源
PUT(UPDATE):通过接口更新服务器上的资源信息,资源内容全量更新,提供资源全部字段信息
DELETE(DELETE):通过删除服务器上的资源
PATCH(UPDATE) :通过接口更新服务器上的资源信息,资源内容增量更新,仅提供更新的属性信息
具体使用规范,使用GET查询获取信息,POST创建新的资源,PUT修改已存在资源信息,DELETE删除服务器资源信息,不强制要求使用Patch。

HTTP码状态使用规范

  • 200 OK :成功
  • 201 CREATED:成功创建数据 不强制使用,可以使用200
  • 400 Bad Request:提交的参数错误。错误信息中要能体现哪个parameter没有通过validation,为什么
  • 401 Unauthorized:客户端传入了一个无效的auth token。客户端需要更新token进行重试,包括让用户重新登陆
  • 403 Forbidden:访问被拒绝。最常见的case为水平越权。和401的区别是:如果改接口需要用户登陆,无有效的登陆token,则返回401,表示登陆验证未通过。登陆验证通过后,但是因为要操作的资源没有权限,则返回403.比如用户更新或者删除不属于自己的resource
  • 404 Not Found: 资源为找到
  • 429 Too Many Requests:对于限频接口请求次数超频
  • 500 Internal Server Error:应用服务器内部错误
  • 502 Bad Gateway:网关或者代理处理请求错误
  • 503 Service Unavailable:应用服务器暂时不可用
  • 504 Gateway Timeout: 网关超时。网关从上游服务没有在设定的时长内获取到数据。

自定义Header规范,

x-[应用英文缩写]-[语义化英文单词说明用途]

示例:
X-Test-Authorization: qwaszxerdfcvtyghbn

返回规范

全部统一使用 Content-Type = application/json 格式返回

请求失败的Response

  • Http码的状态为200或者201
  • code统一为 200,message 为success
  • isSuccess为true
  • 有返回值时,统一通过data返回,无返回值时为{},禁止使用null返回
  • 返回的header中追加标记本次请求的唯一值的 X-[项目英文缩写]-ResponseId
{
  "isSuccess": true,
  "code": 200,
  "message": "success",
  "data": {
    "id": 0,
    "value": "Default"
  },
  "timestamp": "02/02/2020 13:19:22"
}

请求异常的Response

  • Http码的状态根据上一小节介绍的按需使用
  • code和http码对应,message 为对应异常说明
  • isSuccess为false
  • data统一返回为{}
  • 返回的header中追加标记本次请求的唯一值的 X-[项目英文缩写]-ResponseId
{
  "isSuccess": false,
  "code": 400,
  "message": "Bad Request",
  "value": {},
  "timestamp": "02/02/2020 13:35:33"
}

接口注释说明

约定

  • 项目统一使用swagger
  • 接口相关的文档地址
  • 相关jira.$ 分割 XXX-XXX $ XXX-XXX
  • 可能的返回的状态码
  • 对应参数说明
/// <summary>
/// PUT api/values/5
/// </summary>
/// <param name="id">id</param>
/// <param name="dto">dto</param>
/// <remarks>
/// <url>doc: https://www.cnblogs.com/sagecheng/</url> <br/>
/// <br/>
/// <br/>
/// <jira>jira: XXX-XXX</jira>
/// </remarks>
/// <returns></returns>
/// <response code="200"> success </response>
/// <response code="400">If the id is null</response>
/// <response code="404">If the id is not found</response>
[HttpPut("{id}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public ApiResult Put(int id, [FromBody] ValueDto dto)
{
    var info = values.FirstOrDefault(o => o.Id == id);
    if (info == null)
    {
        throw new ApiException(StatusCodes.Status404NotFound, "Not Found");
    }
    info.Value = dto.Value;
    return ApiResult.GetSuccessResult();
}

Swagger相关效果

整体效果
avatar_www.wityx.com

注释效果
avatar_www.wityx.com

参考文章

Swashbuckle 和 ASP.NET Core 入门

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本压缩包包括: 《ActionScript 3.0 语言和组件参考.chm 《Flex 3 RIA开发详解与精深实践》PDF及 配套代码 (1)《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、方法和属性。 在可能的情况下,特定于 AIR 的新项目都以其名称旁的这个小图标作为标志: 本手册提供了 ActionScript 语言中所支持元素的语法和用法信息。 其中包括以下部分: 下面的 《ActionScript 3.0 语言和组件参考》是 Flash® Player 和 Adobe® AIR™ 应用程序编程接口 (API) 的参考手册。 语言元素,如全局变量、运算符、语句、关键字、指令和特殊类型包 按字母顺序排列的类元素条目 具有所有条目的索引 附录,比较 ActionScript 2.0 与 ActionScript 3.0 的某些关键语言和 API 的改动 有关错误和警告的附录(带注释)具有关使用 XML 支持补间动画和 FLVPlayback 字幕的参考信息的附录。 具有关对 Adobe AIR 使用数据库的参考信息的附录 (2)《Flex 3 RIA开发详解与精深实践》一书3位作者杨占坡,杨铭,翁颖做客AIRIA论坛,与技术爱好者在线交流。并配合AIRIA论坛开展活动在线送书、读书、交流尽在AIRIA论坛 别名: 企业级Web应用与AIR桌面应用 作者: 杨占坡&杨铭&翁颖 资源格式: PDF 版本: 文字版 出版社: 清华大学出版社书号: ISBN 9787302188827发行时间: 2009年01月01日 地区: 大陆 语言: 简体中文 简介: 内容介绍: Flex是目前最为普及的一种RIA开发技术,依托于脱胎换骨的ActionScript 3.0,可以轻松实现相比传统的网络应用更加卓越的交互能力和更加绚丽的表现效果。Flex技术本身并不是凭空出现的,经过了Flash的长期预热,依托于XML、ActionScript 3.0等标准化开发语言,终成正果。 本书以实践为手段,以实用为核心,全面解析了应用Flex技术进行RIA开发的思维与过程。从实践开始、到实践结束。从最简单的Hello World演示到完整的项目全案开发,给读者全新的学习过程。 内容分为四部分:开启Flex之门、Flex开发进阶、Flex 3 Web项目全案开发、Flex 3 AIR桌面项目全案开发。涉及了Flex基础概念、组件设计开发、图表开发、企业级应用以及AIR桌面应用等方面。 本书最大的特点是使用大量小巧的示例帮助读者快速体验Flex开发流程。并在最后两大部分中结合完整的项目开发案例,给读者以积少成多、从量变到质变的软件开发学习过程之体验。 本书作者是国内第一个企业级Flex上线项目的负责人,资深软件工程师,并多年从事Flash/Flex RIA开发,具有货真价实的Flex功力。 本书所附光盘,提供作者精心整理的代码、项目文件,并包含国内首次提供的Flex项目开发操作视频。 读者对象:Web开发人员、软件工程师、Flash设计师、网页设计师、软件专业相关师生等。 作者介绍: 杨占坡 主编 资深软件工程师、软件架构师、北京航空航天大学软件工程硕士,精于企业级软件开发和嵌入式系统开发。对C语言、Java语言/JavaEE系统、Ruby on Rails、Flex、Ajax等领域都有深入的研究:国内第一个Flex企业级上线项目核心开发者,属于国内最早一批应用Flex进行企业级开发的软件工程师;国内第一批Ruly on Rails架构的倡导者;拥有企业级分布式架构设计的国家级发明专利。在软件设计方法、软件开发技术方面都具有深刻认识和独到见解。 目录: PART 1 开启Flex之门 第1章 Flex 3程序设计基础 第2章 Flex可视化组件开发 PART 2 Flex开发进阶 第3章 Flex程序设计进阶 第4章 Flex模块化编程 第5章 ActionScript 3精要 第6章 Flex图表 PART 3 Flex 3 Web项目全案开发 第7章 Flex企业级开发实践—— Flex + Struts 第8章 Flex企业级开发实践—— Flex + Web Services PART 4 Flex 3 AIR桌面项目全案开发 第9章 桌面上的Web开发——AIR 第10章 Fl
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
您好!对于C# Web API接口开发,有以下一些常见的步骤和注意事项: 1. 创建一个新的C# Web API项目:使用Visual Studio或其他适合的IDE,创建一个新的C# Web API项目。 2. 定义和设计接口:根据您的需求,确定接口的功能和数据结构。设计良好的接口能够提高代码的可读性和可维护性。 3. 实现控制器:在项目中创建控制器类,控制器类负责处理HTTP请求并返回响应。您可以使用ASP.NET Core框架中的[ApiController]特性来简化一些操作。 4. 定义路由:使用ASP.NET Core框架中的路由特性(如[HttpGet]、[HttpPost]等)来定义API的路由地址和请求方法。 5. 实现业务逻辑:在控制器中实现具体的业务逻辑,可以调用其他服务、数据库或外部API来完成相关操作。 6. 处理数据验证和错误处理:在API接口中进行输入数据的验证,并合理处理可能发生的错误,返回合适的HTTP状态码和错误信息。 7. 编写单元测试:编写单元测试来验证API接口的正确性和稳定性,可以使用xUnit、NUnit等测试框架进行单元测试。 8. 部署和发布:将API应用程序部署到适当的环境中,可以是本地IIS、云服务(如Azure、AWS)等。 需要注意的是,C# Web API开发中应该考虑安全性、性能和可扩展性等方面的需求,同时也要遵循良好的编码规范和最佳实践来提高代码质量。 希望以上信息对您有所帮助!如果您还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值