zoukankan      html  css  js  c++  java
  • RESTful API规范

    1、定义

    RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。REST并没有绑定到HTTP。RESTFUL API是为“资源”而实现的,“资源”可以是实体或服务。资源用表一个唯一的URI(Universal Resource Identifier)表示,资源的状态通过HTTP动词表示(GET、PUT、POST、DELETE)

    2、规范

    • 使用名词

    因为代表的是“资源”,/createUser 替代为 /users

    • 建议用复数

    一个用户:GET /users/123

    用户集合:GET /users

    • 让HTTP动词定义动作 

    • 不要乱用安全(幂等)的方法

    如Get多次调用应该是返回同样的值,让Get去删除就是属于乱用(多次调用返回的结果不一致)GET /users/123/delete

    • 通过URI描述资源层次结构

    /users/123/posts/1 

    • 添加API版本

    版本确保API可以向后兼容实现:

    自定义header 头,如X-API-VERSION=1.1;

    直接放Accept头中,如Accept: application/xxx.v2+jsonURL —— 推荐做法,因为可以肉眼发现不同POST /v2/users

    • 返回资源的表示形式即URI

    如POST添加了新的资源,应该返回HTTP状态码201以及Location头中新创建资源的URI

    • 过滤、搜索&排序

    过滤 ——GET /users/123/posts?state=published

    搜索 ——GET /users/123/posts?state=published&ta=scala

    This will search posts for free text “sometext”(q) and filter results on fq state as published and having tag Scala.

    排序 ——GET /users/123/posts?sort=-updated_at,- 代表降序,+ 代表升序

    • 超媒体作为应用状态的引擎Hypermedia As Transfer Engine Of Application State 

    它提供了通过资源及其可用操作进行导航的便利。通过这种方式,客户机不需要知道如何与应用程序进行不同操作的交互,因为所有元数据都将嵌入到来自服务器的响应中。如 GET /users/123 对应的结果:{ “name”: “John Doe”, “links”: [ { “rel”: “self”, “href”: “http://localhost:8080/users/123" },

    • “身份验证和授权”是无状态

    REST API本身是无状态的,授权可通过JWT或OAuth2(注:JWT与OAuth2不是同一个东西)

    • Swagger作为文档工具
    • 使用HTTP状态码向客户端提供响应

    3、参考

    REST: Good Practices for API Design

    https://medium.com/hashmapinc/rest-good-practices-for-api-design-881439796dc9

    Richardson Maturity Model

    https://restfulapi.net/richardson-maturity-model/

  • 相关阅读:
    hadoop2 作业执行过程之作业提交
    Hadoop各个服务端口列表
    基于 Nginx 和 FFmpeg 搭建流媒体服务器
    prometheus
    ubuntu 下dbus的环境搭建和使用
    Hadoop-Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster —
    Exception message: /bin/bash: line 0: fg: no job control
    P3942 将军令 [贪心]
    P3941 入阵曲
    P3941 入阵曲
  • 原文地址:https://www.cnblogs.com/hepc/p/13917495.html
Copyright © 2011-2022 走看看