RESTFUL規範建議

RESTful概述
RESTful是目前最流行的一種互聯網軟件架構,是程序和程序之間進行數據交互須要遵循的規範。它結構清晰、符合標準、易於理解、擴展方便,因此正獲得愈來愈多網站的採用。python

REST是Representational State Transfer的縮寫,是Roy Thomas Fielding在他2000年的博士論文中提出的。其提出的設計概念和準則爲:編程

  1. 網絡上的全部事物均可以抽象爲資源後端

  2. 每一個資源都應該有惟一的標識(identifier),對資源的操做不會改變標識api

  3. 全部的操做都是無狀態的跨域

  4. 使用標準方法(GET、POST、PUT、PATCH、DELETE)操做資源安全

規範建議

1. https代替http,保證數據傳輸時安全。
    2. 在url中通常要體現api標識,這樣看到url就知道他是一個api。
        http://www.baidu.com/api/....(建議,由於他不會存在跨域的問題)
        http://api.baidu.com/....
        假設:
            前段:https://www.baidu.com/home
            後端:https://www.baidu.com/api/
    3. 在接口中要體現版本
        http://www.baidu.com/api/v1....
        注意:版本還能夠放在請求頭中
            http://www.baidu.com/api/
            accept: ...
            
    4. restful也稱爲面向資源編程,視網絡上的一切都是資源,對資源能夠進行操做,因此通常資源都用名詞。
        http://www.baidu.com/api/user/
        
    5. 若是要加入一些篩選條件,能夠添加在url中    
        http://www.baidu.com/api/user/?page=1&type=9

    6. 根據method不一樣作不一樣操做。
            get、post、put、patch、delete
    7. 返回給用戶狀態碼
        - 200,成功
        - 300,301永久 /302臨時
        - 400,403拒絕 /404找不到
        - 500,服務端代碼錯誤
        
        自定製狀態碼:
                def get(self,request,*args,**kwargs):
                    result = {'code':1000,'data':None,'error':None}
                    try:
                        val = int('你好')
                    except Exception as e:
                        result['code'] = 10001
                        result['error'] = '數據轉換錯誤'
                    return Response(result)
        
    8. 返回值
        GET http://www.baidu.com/api/user/
            [
                {'id':1,'name':'rsx','age':19},
                {'id':1,'name':'rsx','age':19},
            ]
        POST http://www.baidu.com/api/user/
            {'id':1,'name':'rsx','age':43}
            
        GET http://www.baidu.com/api/user/2/
            {'id':2,'name':'rsx','age':43}
            
        PUT http://www.baidu.com/api/user/2/
            {'id':2,'name':'rsx','age':43}
        
        PATCH https//www.baidu.com/api/user/2/
            {'id':2,'name':'rsx','age':43}
            
        DELETE https//www.baidu.com/api/user/2/
            空
    9. 操做異常時,要返回錯誤信息
    
        {
            error: "Invalid API key"
        }
    10. 對於下一個請求要返回一些接口:Hypermedia AP
        {
            'id':2,
            'name':'rsx',
            'age':43,
            'depart': "http://www.baidu.com/api/user/30/"
        }
相關文章
相關標籤/搜索