| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 项目设计-RESTful API设计 -> 正文阅读 |
|
[网络协议]项目设计-RESTful API设计 |
1.背景:? ? ?只要 HTTP 协议存在,Web 服务就已经存在。但尤其是自云计算出现以来,它们已成为让客户与我们的数据交互的一种非常常见的方式。 我一直在从事涉及构建或使用 API 的项目。 我见过的大多数 API 都声称是“?RESTful?”——即符合 REST 架构的原则和约束。 但是,他们中的一些人一直在给 REST 一个非常非常糟糕的名字。 或者是一些非常糟糕的设计。 还有? 状态代码的错误使用、纯文本响应、不一致的模式……等。 所以我决定写下我认为在设计 REST API 时的一些好的做法。 2.?免责声明? ? ? 我不认为以下说法和做法?100% 符合的 REST 原则,但我觉得该方案无限接近REST 原则。 3.基础知识? ? ? 如果你要构建一个设计良好的REST API,您最好了解HTTP 协议的基础知识。我 MDN web docs 上的Overview of HTTP是一本很好的文档。 ?HTTP REST 的应用:
4.不友好的 API 与友好的 API 示例 :
为什么说改设计,不友好。 1. 首先你需要判断code == 0,在去取data内的值。增加不必要的业务逻辑。 2. 正确的请求和错误的请求混淆,主业务逻辑臃肿,且容易出现bug。 ?友好的示例
1.正确请求直接返回结果。 2.错误请求时,返回错误的结果,及错误的详情。 3.正确流程线,和错误流程线分开,有助于写出清晰的代码。 ?客户端请求、解析示例:
该设计与github 同款。 5.友好的 API 设计建议?:1.当程序抛出异常时 ,给出合适的错误码。例如 httpcode 401 用户未授权,403 用已授权,但是权限不足。 2. 当错误发生时,提供比较准确的错误信息,以便于用户通过错误信息,去更改表单,或者能提供错误信息,方便后期快速追踪错误。 3. 客户端在请求时,最好设置最大请求时间,如果api 请求超时,及时给客户提示。这样用户至少能得到一个正确的结果,或者错误的响应。 4.灵活的使用 100-500 的状态码,在业务场景允许时给出最为合适的状态码。 5. 请求分开 GET 请求数据,POST 提交数据,PUT 修改数据,DELETE 修改数据. 6.友好的使用 API 设计能解决哪些问题1.清晰的代码。 2.友好的客户提示。 7.联系我们:?QQ 群390736068 如果各位,觉得还不过瘾,欢迎加入我们。 最后祝各位兄弟姐妹写成精品程序。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/8 6:25:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |