restful規範:
API與用戶的通訊協議,老是使用HTTPs協議。
- URL
https://api.example.com 儘可能將API部署在專用域名(會存在跨域問題)html
https://example.org/api/ API很簡單python
- url名詞
路徑,視網絡上任何東西都是資源,均使用名詞表示(可複數)django
https://api.example.com/v1/zoosjson
https://api.example.com/v1/animalsapi
https://api.example.com/v1/employees跨域
- 版本(v1/v2/……)
- 提交方式
GET: 獲取
POST: 添加
PUT: 更新
DELETE:刪除
- status
2xx:OK
3xx:重定向
4xx:用戶發出的請求有錯誤
5xx:服務器發生錯誤
更多看這裏:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
中文看這裏:http://www.cnblogs.com/yifugui/p/8416123.html
- Hypermedia link
RESTful API最好作到Hypermedia,即返回結果中提供連接,連向其餘API方法,使得用戶不查文檔,也知道下一步應該作什麼。
{"link": { "rel": "collection https://www.example.com/zoos", "href": "https://api.example.com/zoos", "title": "List of zoos", "type": "application/vnd.yourformat+json" }}
- 錯誤詳細
- 返回結果,針對不一樣操做,服務器向用戶返回的結果應該符合如下規範。
GET /collection:返回資源對象的列表(數組) GET /collection/resource:返回單個資源對象 POST /collection:返回新生成的資源對象 PUT /collection/resource:返回完整的資源對象 PATCH /collection/resource:返回完整的資源對象 DELETE /collection/resource:返回一個空文檔
路由系統:數組
1
2
3
|
urlpatterns
=
[
url(r
'^users'
, Users.as_view()),
]
|
CBV視圖:服務器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from
django.views
import
View
from
django.http
import
JsonResponse
class
Users(View):
def
get(
self
, request,
*
args,
*
*
kwargs):
result
=
{
'status'
:
True
,
'data'
:
'response data'
}
return
JsonResponse(result, status
=
200
)
def
post(
self
, request,
*
args,
*
*
kwargs):
result
=
{
'status'
:
True
,
'data'
:
'response data'
}
return
JsonResponse(result, status
=
200
)
|
更多查看:http://www.cnblogs.com/wupeiqi/articles/7805382.htmlrestful