根据豆瓣 API 理解Restful API

1.什么是REST

REST全称是Representational State Transfer,表述状态转移的意思。它是在Roy Fielding博士论文首次提出。REST本身没有创造新的技术、组件或服务,它的理念就是在现有的技术之上,更好的使用现有的 web规范。用REST规范的web服务器,能够更好的展现资源,客户端能够更好的使用资源。每个资源都由URI/ID标识。REST本身跟http无关,但是目前http是与它相关的唯一实例。REST有着优雅、简洁的特性,本文是根据豆瓣api来谈谈自己对restful的一些理解。

2.URI规范

  • URI(Uniform Resource Identifiers) 统一资源标示符
  • URL(Uniform Resource Locator) 统一资源定位符
URI 的格式:
URI的格式定义如下: 
URI = scheme "://" authority "/" path [ "?" query ] [ "#" fragment ]
  • uri代表的是一种资源,要做到优雅、简洁。

  • 最好在api地址标明版本

比如

https://api.douban.com/v2
  • 关于分隔符“/”,比如:

"/"分隔符一般用来对资源层级的划分,比如:

https://api.douban.com/v2/book/1220562

表述了豆瓣api,version2下的图书仓库下的编号为1220562的图书。
  • URI尽量使用“-”代替下划线“_“。

  • URI统一使用小写字母

  • URI不包含文件扩展名

  • 使用?用来过滤资源,比如?limit=10 :指定返回10条记录。

  • 不使用无意义的字符串、数字,要做到简洁。

3.正确使用method

  • get -只用做资源的读取。

  • post-通过用作创建一个新的资源。

  • delete-通过用作资源的删除。

  • put -通过用作更新资源或者创建资源

  • head-只获取某个资源的头部信息。

比如 豆瓣图书api:

namemethodapi
获取图书信息get/v2/book/:id
用户收藏某本图书post/v2/book/:id/collection
用户修改对某本图书的收藏put/v2/book/:id/collection
用户删除对某个图书的收藏delete/v2/book/:id/collection
  • 另外,在一些不符合curd的情况下,使用 post。

  • 把动作转换成资源

    比如,上述接口中,用户收藏某本书对外暴露的接口是”/v2/book/:id/collection”,收藏动作通过post方法来展现,而不直接写着api中,collection “收藏”,名次,动作直接转换成了资源。

4.选择合适的状态码

http请求需要返回状态码,约定俗成的状态码能够帮助开发团队提高沟通效率。

  • 2xx: 请求正常处理并返回

  • 3xx: 重定向

  • 4xx: 客户端请求有错误

  • 5xx: 服务端请求有错误

比如豆瓣api返回的状态码说明:

状态码含义说明
200ok请求成功
201created创建成功
202accepted更新成功
400bad request请求不存在
401unauthorized未授权
403forbidden禁止访问
404not found资源不存在
500internal server error内部错误

5.使用通用的错误码

通用错误码,具体产品由具体产品api给出。比如豆瓣api:

错误码错误信息含义
999unknow_v2_error未知错误
1000need_permission需要权限
1001uri_not_found资源不存在
….

太多了,只列出几条,具体见豆瓣 api。

6. 安全

这部分内容不属于这篇文章,但是稍微说明下:

  • 使用https

  • 使用jwt验证

  • 使用参数签名,防止参数被篡改。

  • 使用权限验证,shiro ,或者自己建数据库(用户、角色、权限)

7.api文档

接口文档的编写至关重要,最好是写一个在线接口文档。接口文档能够方便团队查阅,减少不必要的沟通。如果对外公开api,api文档的质量直接反应了一个公司的技术水平,甚至一个公司的文化气质。

8.参考资料

本文参考了以下的资料:

豆瓣api

理解restful架构

restful introduction

跟着github学习restful api设计

REST接口设计规范

restful api 设计指南

如果喜欢本篇文章,欢迎转发、点赞。关注订阅号「Web项目聚集地」,回复「技术博文」即可获取更多图文教程、技术博文、学习资源。


推荐阅读

1. 

2. 

3. 

4. 

5. 

6. 

7. 

8. 

640?wx_fmt=jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值