Rest和RESTful

介绍

详见:
http://www.ruanyifeng.com/blog/2011/09/restful.html

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的

Rest架构的主要原则

  • 网络上的所有事物都被抽象为资源

  • 每个资源都有一个唯一的资源标识符

  • 同一个资源具有多种表现形式(xml,json等)

  • 对资源的各种操作不会改变资源标识符

  • 所有的操作都是无状态的

RESTful

符合REST原则的架构方式即可称为RESTful

总结

  1. 资源名作为url
  2. 客户端(浏览器、app)通过四个HTTP方法(get、post、put、delete),向服务器发请求
  3. 常见RESTful api,即:返回json,而不是返回html页面。
    好处:前后端分离式开发

优点

  1. 无状态。在调用一个接口时,不用考虑上下文,不用考虑当前状态,极大的降低了复杂度
  2. 轻量,直接基于http,get/post/put/delete为CRUD操作
  3. 面向资源,一目了然,具有自解释性。
  4. 适合多种客户端访问,如:浏览器、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 格式


原文出处:/show_1EF5resN8LL7.html