真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

什么是RESTful

這篇文章主要講解了“什么是RESTful”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“什么是RESTful”吧!

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了做網(wǎng)站、網(wǎng)站設(shè)計(jì),成都網(wǎng)站設(shè)計(jì),廣告投放平臺(tái),成都做網(wǎng)站選成都創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。

REST

REST 不是一個(gè)單詞,是 Representational State Transfer 的縮寫。

直譯過來就是表述性狀態(tài)轉(zhuǎn)移。

我對(duì)這個(gè)名字蒙了一年多,就不能說點(diǎn)能聽得懂的嘛。

從提出 REST 的論文中我翻了翻,沒有明說但是表達(dá)的意思是其實(shí)它還有個(gè)主語 Resource 。

所以是資源的表述性狀態(tài)轉(zhuǎn)移。

稍微可以理解一點(diǎn)了。

我們先不管什么狀態(tài)轉(zhuǎn)移,大致先有點(diǎn)感覺。

知道 REST 之后 RESTful 就不難解釋了,加 ful 就是變形容詞了,比如 wonderful girl。至此對(duì)名字稍微解釋了一下,疑惑還在沒事,咱們慢慢理。

REST 的核心

核心就是資源,用 URL 定位資源,用 HTTP 動(dòng)詞來描述所要做的操作。

HTTP的提供了很多動(dòng)詞:GET、PUT、POST、DELETE......

這些動(dòng)詞都是有含義的。

比如 GET 就是獲取資源,是查詢請(qǐng)求。

PUT 指的是修改資源,是冪等的。

POST 也是修改(新增也是一種修改),指的是不冪等的操作。

所以根據(jù)這些規(guī)范我們都能得知這次交互的一些動(dòng)作,所以 RESTful 風(fēng)格正確的使用姿勢(shì)如下:

比如獲取一個(gè) user。

錯(cuò)誤姿勢(shì):GET /getUserById?userId=1。

正確姿勢(shì):GET /users/1。

再比如新增 user。

錯(cuò)誤姿勢(shì):POST /addUser (省略body)。

正確姿勢(shì):POST /users (省略body)。

可以看到 HTTP 的動(dòng)詞其實(shí)就能指代你要對(duì)資源做的操作,所以不需要在 URL 上做一些東西,就把 URL 表明的東西看作一個(gè)資源即可。

這里注意要用對(duì) HTTP 動(dòng)詞,比如一個(gè)獲取資源的請(qǐng)求用 PUT,用了也能獲取資源但是這不合適。

其實(shí)更深一步的理解是  HTTP 是一個(gè)協(xié)議。

協(xié)議其實(shí)就是約定好的一個(gè)東西,協(xié)議就規(guī)定 GET 是獲取資源,那你非得在 URL 上再重復(fù)一遍或者所有請(qǐng)求不論增刪改都用 GET 這個(gè)動(dòng)作,這其實(shí)就是沒有完全遵循這個(gè)協(xié)議。

可以說只是把 HTTP 當(dāng)成一個(gè)傳輸管道,而不是約定好的協(xié)議。

這其實(shí)是對(duì) HTTP 更深一層的認(rèn)識(shí),我認(rèn)為也是 RESTful 被推出的原因。

當(dāng)然理想很豐滿,現(xiàn)實(shí)很骨感,還是有很多人就 getUserById。

不過我個(gè)人覺得問題不大,公司統(tǒng)一就行。

HATEOAS

即 Hypermedia as the Engine of Application State 的縮寫,翻譯過來就是作為應(yīng)用狀態(tài)引擎的超媒體。

這也是 REST 提出的設(shè)計(jì)。

是不是理解不了?其實(shí)很簡(jiǎn)單。

例子我就不自己編了,抄一下 stackoverflow 回答上的例子。

比如你請(qǐng)求獲取用戶列表:

GET /users Accept: application/json+userdb

此時(shí)的返回應(yīng)該是:

`200 OK
Content-Type: application/json+userdb

{
    "users": [
        {
            "id": 1,
            "name": "Emil",
            "country: "Sweden",
            "links": [
                {
                    "href": "/user/1",
                    "rel": "self",
                    "method": "GET"
                },
                {
                    "href": "/user/1",
                    "rel": "edit",
                    "method": "PUT"
                },
                {
                    "href": "/user/1",
                    "rel": "delete",
                    "method": "DELETE"
                }
            ]
        },
        {
            "id": 2,
           ....省略.....
        }
    ],
    "links": [
        {
            "href": "/user",
            "rel": "create",
            "method": "POST"
        }
    ]
}
`

重點(diǎn)就是這個(gè) links,結(jié)果會(huì)返回你能對(duì)這個(gè)資源所做的操作。

比如對(duì)于 userId 是 1 的,你調(diào)用PUT /user/1就是做修改這個(gè)用戶,DELETE /user/1就是刪除這個(gè)用戶。

最外層的 links 告訴你用 POST /user 就能再創(chuàng)建一個(gè)用戶。

這里還有個(gè)隱藏信息,可以看到外層的 links 沒有返回 DELETE 的信息,說明此時(shí)客戶端無法刪除用戶!

所以說 RESTful API 還需要再返回此時(shí)能對(duì)資源做的操作,這樣客戶端就知道它能做什么。

它也不需要管具體怎么做,反正返回里面會(huì)告訴它 DELETE 就這樣這樣,POST 就這樣這樣。

沒告訴它的就是不能做的。

然后這個(gè)時(shí)候再去理解下資源的表述性狀態(tài)轉(zhuǎn)移,是不是感覺來了?

如果說上一 part 提到用 HTTP 的動(dòng)詞來指代動(dòng)作, URL 僅表示資源的現(xiàn)實(shí)是骨感的。

那么 HATEOAS 的現(xiàn)實(shí)就是骨灰。

基本上沒幾家公司會(huì)這么做。

就我個(gè)人而言這玩意沒啥用。

它的出發(fā)點(diǎn)是讓客戶端從響應(yīng)就能得知對(duì)資源操作的入口,并且通過響應(yīng)得知哪些動(dòng)作能執(zhí)行。

感謝各位的閱讀,以上就是“什么是RESTful”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)什么是RESTful這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


當(dāng)前題目:什么是RESTful
文章起源:http://weahome.cn/article/jpdpjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部