We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
原文在
http://gayhub.cn/blog/api-design-specification
主要是规范一下前后端合作,移动端合作中的数据交互问题。
本次治愈系基于此规范开发。
2016/11/06
patch规定在要修改的对象不存在时须创建对象。所以put才是update的意思,而patch更像saveOrUpdate。
patch
put
update
saveOrUpdate
另外很重要的一点是,目前一些框架不支持patch,所以暂时避免使用。
Status Code
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
Http
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
PUT和PATCH的不同在于,PUT传过来的必须是全部参数,PATCH可以是一部分参数。另外,PUT传的数据有空的话,数据库中也应当对应清空。
在Lumen/Laravel中的可以这样写
Lumen/Laravel
return response()->json(['error' => 'not_found'], 404);
第一个参数为数组,为要返回的json,第二个为status code,这个时候status是不应该放json里面的,以前前后端合作习惯有status来作为判断条件,其实可能不是很规范的方法。
json
status code
依这个规范给同学写了一套简单的接口,用了Lumen,同学说不要token,那我就没写token,所以整套接口是暴露的。。。
Lumen
https://github.com/SunDoge/zeming
仅供参考,实际生产还是用Laravel配合jwt之类的来做,不然配置各种package会把人搞到崩溃。。。
Laravel
The text was updated successfully, but these errors were encountered:
No branches or pull requests
原文在
主要是规范一下前后端合作,移动端合作中的数据交互问题。
本次治愈系基于此规范开发。
patch
规定在要修改的对象不存在时须创建对象。所以put
才是update
的意思,而patch
更像saveOrUpdate
。另外很重要的一点是,目前一些框架不支持
patch
,所以暂时避免使用。Status Code
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
Http
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
PUT和PATCH的不同在于,PUT传过来的必须是全部参数,PATCH可以是一部分参数。另外,PUT传的数据有空的话,数据库中也应当对应清空。
在
Lumen/Laravel
中的可以这样写第一个参数为数组,为要返回的
json
,第二个为status code
,这个时候status是不应该放json里面的,以前前后端合作习惯有status来作为判断条件,其实可能不是很规范的方法。依这个规范给同学写了一套简单的接口,用了
Lumen
,同学说不要token,那我就没写token,所以整套接口是暴露的。。。仅供参考,实际生产还是用
Laravel
配合jwt之类的来做,不然配置各种package会把人搞到崩溃。。。The text was updated successfully, but these errors were encountered: