restful接口设计

阅读更多
作者:覃超
链接:https://www.zhihu.com/question/28557115/answer/48094438
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Server的API如何设计才满足RESTful要求?首先是简洁版里面的那几点。外加一些附带的 best practices:
1. URL root:https://example.org/api/v1/*https://api.example.com/v1/*
2. API versioning:可以放在URL里面,也可以用HTTP的header:/api/v1/
3. URI使用名词而不是动词,且推荐用复数。BAD/getProducts/listOrders/retrieveClientByOrder?orderId=1GOODGET /products : will return the list of all productsPOST /products : will add a product to the collectionGET /products/4 : will retrieve product #4PATCH/PUT /products/4 : will update product #4
4. 保证  HEAD 和 GET 方法是安全的,不会对资源状态有所改变(污染)。比如严格杜绝如下情况:GET /deleteProduct?id=1
5. 资源的地址推荐用嵌套结构。比如:GET /friends/10375923/profileUPDATE /profile/primaryAddress/city
6. 警惕返回结果的大小。如果过大,及时进行分页(pagination)或者加入限制(limit)。HTTP协议支持分页(Pagination)操作,在Header中使用 Link 即可。
7. 使用正确的HTTP Status Code表示访问状态:HTTP/1.1: Status Code Definitions
8. 在返回结果用明确易懂的文本(String。注意返回的错误是要给人看的,避免用 1001 这种错误信息),而且适当地加入注释。
9. 关于安全:自己的接口就用https,加上一个key做一次hash放在最后即可。考虑到国情,HTTPS在无线网络里不稳定,可以使用Application Level的加密手段把整个HTTP的payload加密。有兴趣的朋友可以用手机连上电脑的共享Wi-Fi,然后用Charles监听微信的网络请求(发照片或者刷朋友圈)。如果是平台的API,可以用成熟但是复杂的OAuth2

你可能感兴趣的:(restful接口设计)