<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # Restful API >[success]`Restful API`是目前`Web API` 設計中比較流行的一種設計風格。 ## Restful API >[info]RESTful是一種軟件架構風格、設計風格,而**不是**標準,只是提供了一組設計原則和約束條件。 >[danger]對于這種風格,ThinkPHP框架和laravel框架都給了很好的支持。 ### 一、常用的HTTP動詞 >[success]這種風格對于熟悉ThinkPHP框架的應該都比較熟悉。 ~~~ * GET:讀取(Read) * POST:新建(Create) * PUT:更新(Update) * PATCH:更新(Update),通常是部分更新 * DELETE:刪除(Delete) ~~~ >[danger]大家可能會發現,通常情況下的網絡請求主要是`POST`和`GET`。通常情況下客戶端是不支持除`GET`和`POST`之外的請求方式的。這里的解決方案就是:客戶端發出的 HTTP 請求,要加上`X-HTTP-Method-Override`屬性,來指定請求方式。 ~~~http POST /api/Person/4 HTTP/1.1 X-HTTP-Method-Override: PUT ~~~ ### 二、URI與URL #### URI >[info]URI,統一資源標志符(Uniform Resource Identifier, URI),表示的是web上每一種可用的資源 URI通常由三部分組成: ①訪問資源的命名機制; ②存放資源的主機名; ③資源自身的名稱。 #### URL >[danger]URL是URI的一個子集。 URL的格式由三部分組成:? ①第一部分是協議(或稱為服務方式)。 ②第二部分是存有該資源的主機IP地址(有時也包括端口號) ③第三部分是主機資源的具體地址,如目錄和文件名等。 ### 三、端點設計 >[success]端點是指用于訪問API的URI 設計原則 1. 短小便于輸入的URI 2. 人可以讀懂的URI 3. 沒有大小寫混用的URI 4. 修改方便的URI 5. 不會暴漏服務器端架構的URI 6. 規則統一的URI 例: |目的|端點|方法| |-|-|-| |獲取用戶信息列表|http://api.yifeng.com/v1/users|GET| |新用戶注冊|http://api.yifeng.com/v1/users|POST| |獲取特定用戶信息|http://api.yifeng.com/v1/users/:id|GET| |更新用戶信息|http://api.yifeng.com/v1/users/:id|PUT/PATCH| |刪除用戶信息|http://api.yifeng.com/v1/users/:id|DELETE| ### 四、HTTP狀態碼 客戶端的每一次請求,服務器都必須給出回應。回應包括 HTTP 狀態碼和數據兩部分。當然,也可以根據需求再返回一個 業務狀態碼。具體的規范可以自行設定。 HTTP 狀態碼就是一個三位數,分成五個類別。 |狀態碼|含義| |-|-| |1字頭|消息| |2字頭|成功| |3字頭|重定向| |4字頭|客戶端原因引起的錯誤| |5字頭|服務器端原因引起的錯誤| 主要的狀態碼 |狀態碼|名稱|含義| |-|-|-| |200|OK|請求成功| |201|Created|請求成功,新資源建立| |202|Accept|請求成功| |204|No Content|請求成功,沒有內容| |300|Multiple Choices|存在多個資源| |301|Moved Permanently|資源被永轉移| |302|Found|請求的資源被暫時轉移| |303|See Other|引用他處| |400|Bad Request|請求不正確| |401|Unauthorized|需要認證| |403|Forbidden|禁止訪問| |404|Not Found|沒有找到指定的資源| |429|Too Many Requests|訪問次數過多| |500|Internal Server Error|服務器端發生錯誤| |503||服務器暫時停止運營 >[danger]關于狀態碼這一塊大家可以到百度上去了解一下。業務狀態碼是咱們自行定義的! ### 五、服務器回應 >[success]一般情況下,服務器不要回復純文本的數據,通常情況下返回的是`XML`或`JSON`格式的數據。 >[danger] Web API其實就是網頁的一種,其返回的數據形式更容易讓計算機程序處理,而不是返回普通的HTML。所以返回的數據應該盡可能地設計得方便計算機程序處理。 >[info]在這里就使用JOSN作為返回的數據格式。 #### 數據格式返回的指定方法 1. 使用查詢參數的方法 2. 使用擴展名的方法 3. 使用在請求首部指定媒體類型的方法 >[danger]如果您的接口不需要同時支持多種類型,也可以不需要進行執定。 >[danger]在返回數據時,在滿足需求的情況下,返回的數據量越小越好。(可以讓用戶來決定返回的數據) #### 返回數據的封裝 >[info]關于響應返回的數據格式,建義封裝成統一樣的格式。 ### 六、版本號 >[success]關于版本號的,有多種解決方案。在這里使用ThinkPHP自帶的解決方案。 ### 七、API接口文檔 >[success]通常情況下,API接口的開發者和使用者是不同的人群,所以做一詳細的接口文檔是十分必要的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看