restful api php,RestfulAPI · ThinkPHP6.0接口开发与应用及uniapp快速入门(更新完毕) · 看云...
# Restful API
>[success]`Restful API`是目前`Web API` 設(shè)計(jì)中比較流行的一種設(shè)計(jì)風(fēng)格。
## Restful API
>[info]RESTful是一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,而**不是**標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。
>[danger]對(duì)于這種風(fēng)格,ThinkPHP框架和laravel框架都給了很好的支持。
### 一、常用的HTTP動(dòng)詞
>[success]這種風(fēng)格對(duì)于熟悉ThinkPHP框架的應(yīng)該都比較熟悉。
~~~
* GET:讀取(Read)
* POST:新建(Create)
* PUT:更新(Update)
* PATCH:更新(Update),通常是部分更新
* DELETE:刪除(Delete)
~~~
>[danger]大家可能會(huì)發(fā)現(xiàn),通常情況下的網(wǎng)絡(luò)請(qǐng)求主要是`POST`和`GET`。通常情況下客戶端是不支持除`GET`和`POST`之外的請(qǐng)求方式的。這里的解決方案就是:客戶端發(fā)出的 HTTP 請(qǐng)求,要加上`X-HTTP-Method-Override`屬性,來(lái)指定請(qǐng)求方式。
~~~http
POST /api/Person/4 HTTP/1.1
X-HTTP-Method-Override: PUT
~~~
### 二、URI與URL
#### URI
>[info]URI,統(tǒng)一資源標(biāo)志符(Uniform Resource Identifier, URI),表示的是web上每一種可用的資源
URI通常由三部分組成:
①訪問(wèn)資源的命名機(jī)制;
②存放資源的主機(jī)名;
③資源自身的名稱。
#### URL
>[danger]URL是URI的一個(gè)子集。
URL的格式由三部分組成:
①第一部分是協(xié)議(或稱為服務(wù)方式)。
②第二部分是存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào))
③第三部分是主機(jī)資源的具體地址,如目錄和文件名等。
### 三、端點(diǎn)設(shè)計(jì)
>[success]端點(diǎn)是指用于訪問(wèn)API的URI
設(shè)計(jì)原則
1. 短小便于輸入的URI
2. 人可以讀懂的URI
3. 沒(méi)有大小寫(xiě)混用的URI
4. 修改方便的URI
5. 不會(huì)暴漏服務(wù)器端架構(gòu)的URI
6. 規(guī)則統(tǒng)一的URI
例:
|目的|端點(diǎn)|方法|
|-|-|-|
|獲取用戶信息列表|http://api.yifeng.com/v1/users|GET|
|新用戶注冊(cè)|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狀態(tài)碼
客戶端的每一次請(qǐng)求,服務(wù)器都必須給出回應(yīng)。回應(yīng)包括 HTTP 狀態(tài)碼和數(shù)據(jù)兩部分。當(dāng)然,也可以根據(jù)需求再返回一個(gè) 業(yè)務(wù)狀態(tài)碼。具體的規(guī)范可以自行設(shè)定。
HTTP 狀態(tài)碼就是一個(gè)三位數(shù),分成五個(gè)類別。
|狀態(tài)碼|含義|
|-|-|
|1字頭|消息|
|2字頭|成功|
|3字頭|重定向|
|4字頭|客戶端原因引起的錯(cuò)誤|
|5字頭|服務(wù)器端原因引起的錯(cuò)誤|
主要的狀態(tài)碼
|狀態(tài)碼|名稱|含義|
|-|-|-|
|200|OK|請(qǐng)求成功|
|201|Created|請(qǐng)求成功,新資源建立|
|202|Accept|請(qǐng)求成功|
|204|No Content|請(qǐng)求成功,沒(méi)有內(nèi)容|
|300|Multiple Choices|存在多個(gè)資源|
|301|Moved Permanently|資源被永轉(zhuǎn)移|
|302|Found|請(qǐng)求的資源被暫時(shí)轉(zhuǎn)移|
|303|See Other|引用他處|
|400|Bad Request|請(qǐng)求不正確|
|401|Unauthorized|需要認(rèn)證|
|403|Forbidden|禁止訪問(wèn)|
|404|Not Found|沒(méi)有找到指定的資源|
|429|Too Many Requests|訪問(wèn)次數(shù)過(guò)多|
|500|Internal Server Error|服務(wù)器端發(fā)生錯(cuò)誤|
|503||服務(wù)器暫時(shí)停止運(yùn)營(yíng)
>[danger]關(guān)于狀態(tài)碼這一塊大家可以到百度上去了解一下。業(yè)務(wù)狀態(tài)碼是咱們自行定義的!
### 五、服務(wù)器回應(yīng)
>[success]一般情況下,服務(wù)器不要回復(fù)純文本的數(shù)據(jù),通常情況下返回的是`XML`或`JSON`格式的數(shù)據(jù)。
>[danger] Web API其實(shí)就是網(wǎng)頁(yè)的一種,其返回的數(shù)據(jù)形式更容易讓計(jì)算機(jī)程序處理,而不是返回普通的HTML。所以返回的數(shù)據(jù)應(yīng)該盡可能地設(shè)計(jì)得方便計(jì)算機(jī)程序處理。
>[info]在這里就使用JOSN作為返回的數(shù)據(jù)格式。
#### 數(shù)據(jù)格式返回的指定方法
1. 使用查詢參數(shù)的方法
2. 使用擴(kuò)展名的方法
3. 使用在請(qǐng)求首部指定媒體類型的方法
>[danger]如果您的接口不需要同時(shí)支持多種類型,也可以不需要進(jìn)行執(zhí)定。
>[danger]在返回?cái)?shù)據(jù)時(shí),在滿足需求的情況下,返回的數(shù)據(jù)量越小越好。(可以讓用戶來(lái)決定返回的數(shù)據(jù))
#### 返回?cái)?shù)據(jù)的封裝
>[info]關(guān)于響應(yīng)返回的數(shù)據(jù)格式,建義封裝成統(tǒng)一樣的格式。
### 六、版本號(hào)
>[success]關(guān)于版本號(hào)的,有多種解決方案。在這里使用ThinkPHP自帶的解決方案。
### 七、API接口文檔
>[success]通常情況下,API接口的開(kāi)發(fā)者和使用者是不同的人群,所以做一詳細(xì)的接口文檔是十分必要的。
總結(jié)
以上是生活随笔為你收集整理的restful api php,RestfulAPI · ThinkPHP6.0接口开发与应用及uniapp快速入门(更新完毕) · 看云...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pdo oracle返回参数游标,PDO
- 下一篇: php递归算法排序,php常用的排序算法