Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rest restful-api #40

Open
TokenYangForever opened this issue Apr 25, 2018 · 1 comment
Open

rest restful-api #40

TokenYangForever opened this issue Apr 25, 2018 · 1 comment

Comments

@TokenYangForever
Copy link
Owner

TokenYangForever commented Apr 25, 2018

前言

  • rest是Representational State Transfer的简称,直译过来就是:表述性状态转移(什么鬼?)。
  • rest这个概念出自美国的一位博士的论文,讲到rest的章节地址在这里:http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#fig_5_8
  • 而我理解的restful-api是一种后端接口api的规范标准,是一种定义接口的风格,核心理念在于:URL定位资源,用HTTP请求方法(GET,POST,DELETE,DETC)描述操作。

restful api url规范

  • 服务端提供的restful api中:url应该以名词(常为复数形式)命名,不应该包含动词。然后URL是用来定位资源,资源是restful中的核心。
  • 通过http协议的动词来实现资源的扭转:
    • GET 获取资源
    • POST 新建/更新资源
    • PUT 更新资源
    • DElETE 删除资源
  • 举个🌰,假如有个资源表示好友信息,传统的接口定义可能会像这样:
http://api.qc.com/getFriends?id=12345 获取好友信息
http://api.qc.com/updateFriends  更新好友信息

而restful就应该像下面这样,通过一个URL定位资源:

http://api.qc.com/v1/friends/12345
定位id为12345的好友资源
get方法请求URL表示获取资源
post方法请求并传递相关参数,实现更新资源
  • URL的组成可能包括:模块名称、版本号、资源名称、资源id等等。
  • 还有接口返回的http状态码也应该要对应规范:
    • 2XX:表示正常
    • 3XX:表示资源位置已转移
    • 4XX:表示客户端错误
    • 5XX:表示服务端错误

无状态原则

  • 首先要了解什么是web服务中的状态,这里指的是http建立请求的状态,是两个关联用户(client和server)进行交互操作时所留下来的状态信息(比如工作流、用户状态信息等数据)
  • 无状态是指server端不保存任何连接会话状态的信息有状态的话就会把会话的状态信息保存在server的session中
@TokenYangForever
Copy link
Owner Author

  • 幂等: 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同
  • rest-ful中的delete删除资源应该是幂等的(可以多次调用)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant