restful

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了restful脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1:restful

全称是RePResentational state transfer

首次出现在2000年Roy Fielding博士论文中。

理解:以网络为基础的应用软件的架构设计,功能强,性能好,适宜通信的架构,

2:RESTful API设计规范 

restful 是目前最流行的API设计规范,用于web数据接口的设计。他的最大原则就是容易把握,当细节不容易做对

RESTful的核心思想就是,客户端发出的数据+操作指令都是“动词+宾语”的结构,

比如 GET /articles 这个命令,GET是动词,/articles是宾语,动词通常就有5种HTTP请求方法,对应CRUD操作,

根据 HTTP 规范,动词一律大写。 有些客户端只能使用GET和POST这两种方法。

是REST系统的核心概念。 所有的设计都是以资源为中心

(什么是表述性:就是指客户端请求一个资源,服务器拿到的这个资源,就是表述)
资源的地址 在web中就是URL (统一资源标识符)
 
1、协议(Protocol)

API与用户的通信协议,尽量使用HTTPs协议。

HTTPs协议的所有信息都是加密传播,第三方无法窃听,具有校验机制,一旦被篡改,通信双方会立刻发现,配备身份证书,止身份被冒充。
2:域名(ROOT URL)应该尽量将API部署在专用域名之下。
https://api.example.COM如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下。https://example.org/api/
3、版本(Versioning)应该将API的版本号放入URL。
https://api.example.com/v1/另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。GIThub采用这种做法。注意:   需要注意版本规划,以便以后API的升级和维护。使得API版本变得强制性,不要发布无版本的API,使用简单数字,避免小数点如2.5。
4、路径(Endpoints) 路径表示API的具体网址URL。在RESTful架构中,每个URL代表一种资源(resource),所以网址中不能有动词只能有名词,而且所用的名词往往与代表的对象名称对应。一般来说,某一同种记录的”集合”(collection),所以API中的名词也应该使用复数
   具体细则:   1、使用名词而不是动词。举例来说,某个URL是/cards/show/1,其中show是动词,这个URL就设计错了,正确的写法应该是/cards/1,然后用GET方法表示show。如果某些动作是HTTP动词表示不了的,你就应该把动作做成一种资源。比如网上汇款,从账户1向账户2汇款500元,错误的URI是:POST /accounts/1/transfer/500/to/2。正确的写法是把动词transfer改成名词transaction,资源不能是动词,但是可以是一种服务:POST /transaction?From=1&to=2&amount=500.00。   2、使用复数名词。不要混淆名词单数和复数,为了保持简单,只对所有资源使用复数。   举例:   /cars 而不是 /car   /users 而不是 /user   /products 而不是 /product   /settings 而不是 /setting   3、使用子资源表达关系。如果一个资源与另外一个资源有关系,使用子资源。   举例:   GET /cars/911/drivers/ 返回 car 911的所有司机   GET /cars/911/drivers/8 返回 car 911的8号司机
5、HTTP动词(HTTP Verbs)
6、过滤信息(Filtering)

如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。为集合提供过滤、排序、选择和分页等功能。   下面是一些常见的参数。

  • ?limit=10:指定返回记录的数量
  • ?offset=10:指定返回记录的开始位置。
  • ?pageNumber=2&PErSize=100:指定第几页,以及每页的记录数。
  • ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
  • ?animal_type_id=1:指定筛选条件
7、状态码(Status Codes)

  服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。

  • 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
  • 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
  • 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务
  • 204 NO CONTENT - [DELETE]:用户删除数据成功。
  • 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
  • 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
  • 403 Forbidden - [*]:表示用户得到授权(与401错误相对),但是访问是被禁止的。
  • 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
  • 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
  • 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
  • 422 Unprocesable entity - [POST/PUT/PATCH]:当创建一个对象时,发生一个验证错误。
  • 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
8、错误处理(Error handling)
如果状态码是4xx,就应该向用户返回出错信息。
9、返回结果(Response)

  服务器返回的数据格式,应该尽量使用JSON,避免使用XML。针对不同操作,服务器向用户返回的结果应该符合以下规范。

  • GET /collection:返回资源对象的列表(数组)
  • GET /collection/resource:返回单个资源对象
  • POST /collection:返回新生成的资源对象
  • PUT /collection/resource:返回完整的资源对象
  • PATCH /collection/resource:返回完整的资源对象
  • DELETE /collection/resource:返回一个空文档
 

脚本宝典总结

以上是脚本宝典为你收集整理的restful全部内容,希望文章能够帮你解决restful所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。