restful API

2017 年 11 月 25 日PHP Standard

说明

1. 在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词一般与数据库的表格名对应。

2.对于资源的具体操作类型,由HTTP动词表示。常用的HTTP动词有下面五个(括号里是对应的SQL命令)。

GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

3. 返回结果,针对不同操作,服务器向用户返回的结果应该符合以下规范。

GET /collection:返回资源对象的列表(数组)

GET /collection/resource:返回单个资源对象

POST /collection:返回新生成的资源对象

PUT /collection/resource:返回完整的资源对象

PATCH /collection/resource:返回完整的资源对象

DELETE /collection/resource:返回一个空文档

实现(示例)

请求路径方法对应方法名如下

请求方法 请求路径 访问控制器方法 说明

GET /user index() 返回用户列表

GET /user/123 show($id) 返回$id=123的用户信息

POST /user store() 新建一个用户

PUT / PATCH /user/123 update($id) 修改$id=123的用户信息

DELETE /user/123 delete($id) 删除$id=123的用户

POST /user/foo foo() 自定义方法

其他

前端请求方法为PUT / PATCH/DELETE 时,属于非简单访问,会产生跨域问题,会在正式通信之前,增加一次HTTP查询请求,预请求用的请求方法是OPTIONS。
服务器收到”预检”请求以后,检查Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段,确认允许跨源请求,就可以做出回应:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE
Access-Control-Allow-Headers: Origin,X-requested-with,content-Type,Accept