REST 接口

REST 接口文章目录 REST 接口 API 请求方法 REST 接口在请求层面 REST 规范可以简单粗暴抽象成以下两个规则 url 定位资源请求的 method 是对这个资源的操作 知乎大神 Ivony 有句话说的好 URL 定位资源 用 HTTP 动词 GET POST DELETE DETC 描述操作在设计 web 接口的时候 REST 主要是用于定义接口名 接口名一般是用名词写 不用动词 那怎么表达 获取 或者 删除 或者 更新 这样的操作呢 用请求类型来区分 比如 我们有一个 friends 接口 对于 朋友 我们有增删改

REST 接口

增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST 删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE 修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT 查找朋友,uri: generalcode.cn/va/friends 接口类型:GET 

API请求方法

GET /api/users ( 表示读取用户列表) 

【Created】,资源的创建,用 POST 方法;POST 是一个非幂等的方法,多次调用会造成不同效果;
【Update】,资源的更新。用于更新的 HTTP 方法有两个,PUT 和 PATCH。
他们都应当被实现为幂等方法,即多次同样的更新请求应当对服务器产生同样的副作用。




PUT 和 PATCH 有各自不同的使用场景:

PUT 用于更新资源的全部信息,在请求的 body 中需要传入修改后的全部资源主体;

而 PATCH 用于局部更新,在 body 中只需要传入需要改动的资源字段。

【Delete】,资源的删除,相应的请求 HTTP 方法就是 DELETE。这个也应当被实现为一个幂等的方法。

状态码

服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的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 – [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

返回结果

针对不同操作,服务器向用户返回的结果应该符合以下规范。

  • GET /collection:返回资源对象的列表(数组)
  • GET /collection/resource:返回单个资源对象
  • POST /collection:返回新生成的资源对象
  • PUT /collection/resource:返回完整的资源对象
  • PATCH /collection/resource:返回完整的资源对象
  • DELETE /collection/resource:返回一个空文档
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216665.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:21
下一篇 2026年3月18日 上午11:21


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号