介绍
详见:
http://www.ruanyifeng.com/blog/2011/09/restful.html
REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的
Rest架构的主要原则
网络上的所有事物都被抽象为资源
每个资源都有一个唯一的资源标识符
同一个资源具有多种表现形式(xml,json等)
对资源的各种操作不会改变资源标识符
所有的操作都是无状态的
RESTful
符合REST原则的架构方式即可称为RESTful
总结
- 资源名作为url
- 客户端(浏览器、app)通过四个HTTP方法(get、post、put、delete),向服务器发请求
- 常见RESTful api,即:返回json,而不是返回html页面。
好处:前后端分离式开发
优点
- 无状态。在调用一个接口时,不用考虑上下文,不用考虑当前状态,极大的降低了复杂度
- 轻量,直接基于http,get/post/put/delete为CRUD操作
- 面向资源,一目了然,具有自解释性。
- 适合多种客户端访问,如:浏览器、app等
缺点
在业务系统中,不是所有的东西都是“资源”,在复杂业务中,一个操作包含增删改查,此时用 RESTful 就不合适
应用场景
RESTful 更适合互联网应用,如:微博、博客、论坛,新闻等,功能主要是增删改查、点赞、收藏、评论
在业务系统中也可以使用,但不够灵活,一般http的put、delete方法较少使用
例子
以 图书管理系统的 图书增删改查为例:
添加图书
传统url:http://ip:port/addBook,post方法提交表单,返回html页面或json
RESTful api:http://ip:port/book,post方法,返回json
删除图书
传统url:http://ip:port/delBook?id=1,http的 get 、post 方法提交表单,返回html页面或json
RESTful api:http://ip:port/book/1,http的delete方法,返回json
修改图书
传统url:http://ip:port/modifyBook,http的post方法提交表单,返回html页面或json
RESTful api:http://ip:port/book,http的put方法,返回json
put方法可以像post那样提交数据
显示一本图书的详细信息
传统url:http://ip:port/getBookById?id=1,http的get、post 方法提交表单,返回html页面或json
RESTful api:http://ip:port/book/1,http的get方法,返回json
高级查询
传统url:http://ip:port/search?title=java从入门到大神,http的 get、post 方法提交表单,返回html页面或json
RESTful api:http://ip:port/books,http的post方法,返回json
总结
传统方式
访问一个模块时,请求资源(url)是 不同 的:
添加:http://ip:port/addBook
删除:http://ip:port/delBook?id=1
修改:http://ip:port/modifyBook
显示:http://ip:port/getBookById?id=1
RESTful风格
访问一个模块时,请求资源(url)是 相同 的:
添加:http://ip:port/book,post 请求,一般提交 json 格式
删除:http://ip:port/book/1,delete 请求
修改:http://ip:port/book,put 请求,一般提交 json 格式
显示:http://ip:port/book/1,get 请求
高级查询:http://ip:port/books,post请求,一般提交 json 格式