RESTFul API有哪些特点:
- 基于“资源”,数据也好、服务也好,在RESTFul设计里一切都是资源。
- 无状态。一次调用一般就会返回结果,不存在类似于“打开连接-访问数据-关闭连接”这种依赖于上一次调用的情况。
- URL中通常不出现动词,只有名词
- URL语义清晰、明确
- 使用HTTP的GET、POST、DELETE、PUT来表示对于资源的增删改查
-
使用JSON不使用XML
我举个例子:
网站:/get_user?id=3
RESTFul: GET /user/3 (GET是HTTP类型)
常用的请求方式:
- GET(SELECT):从服务器取出资源(一项或多项)
- POST(CREATE):在服务器新建一个资源
- PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)
- PATCH(UPDATE):在服务器更新资源(客户端提供需要修改的资源数据)
- DELETE(DELETE):从服务器删除资源
一些不常用的请求方式:
- HEAD:HEAD和GET类似,只不够HEAD只会返回response的头部,也就是响应头,并不会返回响应体。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
- OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
- CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
常用返回状态码:
HTTP状态码,在REST中都有特定的意义:200,201,202,204,400,401,403,500。
- 当
GET
,PUT
和PATCH
请求成功时,要返回对应的数据,及状态码200
,即SUCCESS - 当
POST
创建数据成功时,要返回创建的数据,及状态码201
,即CREATED - 当
DELETE
删除数据成功时,不返回数据,状态码要返回204
,即NO CONTENT - 当
GET
不到数据时,状态码要返回404
,即NOT FOUND - 任何时候,如果请求有问题,如校验请求数据时发现错误,要返回状态码
400
,即BAD REQUEST - 当API 请求需要用户认证时,如果request中的认证信息不正确,要返回状态码
401
,即NOT AUTHORIZED - 当API 请求需要验证用户权限时,如果当前用户无相应权限,要返回状态码
403
,即FORBIDDEN