Restful接口規范


1.Restful

  REST全稱是Representational State Transfer,中文意思是表述(編者注:通常譯為表征性狀態轉移)

  RESTful是一種定義Web API接口的設計風格,尤其適用於前后端分離的應用模式中。
  這種風格的理念認為后端開發任務就是提供數據的,對外提供的是數據資源的訪問接口,所以在定義接口時,客戶端訪問的URL路徑就表示這種要操作的數據資源。
  事實上,我們可以使用任何一個框架都可以實現符合restful規范的API接口.
  RESTful作為目前最流行的 API 設計規范,一定有着它獨有的魅力:強大、簡介、易上手.

2.Restful的十條接口規范

# 10條規范
1.數據的安全保障:
    url鏈接一般都采用https協議進行傳輸 注:采用https協議,可以提高數據交互過程中的安全性

2.接口特征表現,一看就知道是個api接口
    - 用api關鍵字標識接口url:
      - [https://api.baidu.com](https://api.baidu.com/)
      - https://www.baidu.com/api
      注:看到api字眼,就代表該請求url鏈接是完成前后台數據交互的
      -路飛的接口:https://api.luffycity.com/api/v1/course/free/

3.多數據版本共存
    - 在url鏈接中標識數據版本
    - https://api.baidu.com/v1
    - https://api.baidu.com/v2
    注:url鏈接中的v1、v2就是不同數據版本的體現(只有在一種數據資源有多版本情況下:例如在原有版本上增加接口,類似改版,也需要保證老版本可以使用)

4.數據即資源(均使用名詞)
    接口一般都是完成前后台數據的交互,交互的數據我們稱之為資源
    https://api.baidu.com/users
    https://api.baidu.com/books
    https://api.baidu.com/book
    注:一般提倡用資源的復數形式,在url鏈接中獎勵不要出現操作資源的動詞,錯誤示范:https://api.baidu.com/delete-user
    特殊的接口可以出現動詞,因為這些接口一般沒有一個明確的資源,或是動詞就是接口的核心含義
    https://api.baidu.com/place/search
    https://api.baidu.com/login

5.資源操作由請求方式決定(method)
    - 操作資源一般都會涉及到增刪改查,我們提供請求方式來標識增刪改查動作
      - https://api.baidu.com/books - get請求:獲取所有書
      - https://api.baidu.com/books/1 - get請求:獲取主鍵為1的書
      - https://api.baidu.com/books - post請求:新增一本書書
      - https://api.baidu.com/books/1 - put請求:整體修改主鍵為1的書
      - https://api.baidu.com/books/1 - patch請求:局部修改主鍵為1的書
      - https://api.baidu.com/books/1 - delete請求:刪除主鍵為1的書

6.過濾,通過在url上傳參的形式傳遞搜索條件
    - https://api.example.com/v1/zoos?limit=10:指定返回記錄的數量
    - https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置
    - https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數
    - https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序
    - https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件

7.響應狀態碼
    7.1 正常響應
    - 響應狀態碼2xx
      - 200:常規請求
      - 201:創建成功
   7.2 重定向響應
    - 響應狀態碼3xx
      - 301:永久重定向
      - 302:暫時重定向
   7.3 客戶端異常
    - 響應狀態碼4xx
      - 403:請求無權限
      - 404:請求路徑不存在
      - 405:請求方法不存在
    7.4 服務器異常
    - 響應狀態碼5xx
      - 500:服務器異常

8.錯誤處理,應返回錯誤信息,error當做key
    {
        error: "無權限操作"
    }

9.返回結果,針對不同操作,服務器向用戶返回的結果應該符合以下規范
    GET /collection:返回資源對象的列表(數組)
    GET /collection/resource:返回單個資源對象
    POST /collection:返回新生成的資源對象
    PUT /collection/resource:返回完整的資源對象
    PATCH /collection/resource:返回完整的資源對象
    DELETE /collection/resource:返回一個空文檔

10.需要url請求的資源:需要訪問資源的請求鏈接
    # Hypermedia API,RESTful API最好做到Hypermedia,即返回結果中提供鏈接,連向其他API方法,使得用戶不查文檔,也知道下一步應該做什么
    {
            "status": 0,
            "msg": "ok",
            "results":[
                {
                    "name":"肯德基(羅餐廳)",
                    "img": "https://image.baidu.com/kfc/001.png"
                }
                ...
                ]
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM