把api放在专属域名下,要带版本号
api的url中应该只有名词,和数据库的表或文档资源相对应;对资源(collection)的具体操作类型则由http方法动词表示
(安全性:不改变资源状态,类似只读;冪等性:执行一次或多次,对资源状态的改变等价)
取出 - 安全、冪等
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
新建 - 不安全、不冪等
POST /collection:返回新生成的资源对象
更新 - 不安全、冪等
PUT /collection/resource:返回完整的资源对象
删除 - 不安全、冪等
DELETE /collection/resource:返回一个空文档
返回的记录数量很多时,不应一次提供给用户,api应提供参数以过滤返回结果
状态码
200 OK - 服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)
201 CREATED - 用户新建或修改数据成功
202 Accepted - 表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - 用户删除数据成功
400 INVALID REQUEST - 用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的
401 Unauthorized - 表示用户没有权限(令牌、用户名、密码错误)
403 Forbidden - 表示用户得到授权(与401错误相对),但是访问是被禁止的
404 NOT FOUND - 用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的
406 Not Acceptable - 用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)
410 Gone -用户请求的资源被永久删除,且不会再得到的
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
500 INTERNAL SERVER ERROR - 服务器发生错误,用户将无法判断发出的请求是否成功尽量用json,不用xml
因为JSON的结构更容易映射至一般语言的数据结构