日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RESTful设计原则和样例(开发前后台接口)

發(fā)布時(shí)間:2025/3/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RESTful设计原则和样例(开发前后台接口) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
摘要 REST(表征性狀態(tài)傳輸)設(shè)計(jì)風(fēng)格;REST通常基于使用HTTP,URI協(xié)議和標(biāo)準(zhǔn)。使用URL標(biāo)識(shí)資源,開發(fā)前后臺(tái)接口。主要使用post,get方式

參考博文: http://www.cnblogs.com/artech/p/restful-web-api-02.html ???

維基百科:https://zh.wikipedia.org/wiki/REST

目前在三種主流的Web服務(wù)實(shí)現(xiàn)方案中,因?yàn)镽EST模式與復(fù)雜的SOAP和XML-RPC相比更加簡(jiǎn)潔,越來越多的web服務(wù)開始采用REST風(fēng)格設(shè)計(jì)和實(shí)現(xiàn)。例如,Amazon.com提供接近REST風(fēng)格的Web服務(wù)進(jìn)行圖書查找;雅虎提供的Web服務(wù)也是REST風(fēng)格的。

?

要點(diǎn)及標(biāo)準(zhǔn)

?

需要注意的是,REST是設(shè)計(jì)風(fēng)格而不是標(biāo)準(zhǔn)。REST通常基于使用HTTP,URI,和XML以及HTML這些現(xiàn)有的廣泛流行的協(xié)議和標(biāo)準(zhǔn)。

  • 資源是由URI來指定。

  • 對(duì)資源的操作包括獲取、創(chuàng)建、修改和刪除資源,這些操作正好對(duì)應(yīng)HTTP協(xié)議提供的GET、POST、PUT和DELETE方法。

  • 通過操作資源的表現(xiàn)形式來操作資源。

  • 資源的表現(xiàn)形式則是XML或者HTML,取決于讀者是機(jī)器還是人,是消費(fèi)web服務(wù)的客戶軟件還是web瀏覽器。當(dāng)然也可以是任何其他的格式。

REST的要求

  • 客戶端和服務(wù)器結(jié)構(gòu)

  • 連接協(xié)議具有無狀態(tài)性

  • 能夠利用Cache機(jī)制增進(jìn)性能

  • 層次化的系統(tǒng)

  • 所需代碼 -?JavaScript?(可選)

關(guān)于狀態(tài)

應(yīng)該注意區(qū)別應(yīng)用的狀態(tài)和連接協(xié)議的狀態(tài)。HTTP連接是無狀態(tài)的(也就是不記錄每個(gè)連接的信息),而REST傳輸會(huì)包含應(yīng)用的所有狀態(tài)信息,因此可以大幅降低對(duì)HTTP連接的重復(fù)請(qǐng)求資源消耗。

應(yīng)用于 Web 服務(wù)

符合 REST 設(shè)計(jì)風(fēng)格的 Web API 稱為?RESTful API。它從以下三個(gè)方面資源進(jìn)行定義:

  • 直觀簡(jiǎn)短的資源地址:URI,比如:http://example.com/resources/。

  • 傳輸?shù)馁Y源:Web服務(wù)接受與返回的互聯(lián)網(wǎng)媒體類型,比如:JSON,XML?,YAML?等。

  • 對(duì)資源的操作:Web服務(wù)在該資源上所支持的一系列請(qǐng)求方法(比如:POST,GET,PUT或DELETE)。

下表列出了在實(shí)現(xiàn) RESTful API 時(shí) HTTP 請(qǐng)求方法的典型用途。

[1]?HTTP 請(qǐng)求方法在 RESTful API 中的典型應(yīng)用 資源GETPUTPOSTDELETE一組資源的URI,比如http://example.com/resources/單個(gè)資源的URI,比如http://example.com/resources/142
列出?URI,以及該資源組中每個(gè)資源的詳細(xì)信息(后者可選)。使用給定的一組資源替換當(dāng)前整組資源。在本組資源中創(chuàng)建/追加一個(gè)新的資源。 該操作往往返回新資源的URL。刪除?整組資源。
獲取?指定的資源的詳細(xì)信息,格式可以自選一個(gè)合適的網(wǎng)絡(luò)媒體類型(比如:XML、JSON等)替換/創(chuàng)建?指定的資源。并將其追加到相應(yīng)的資源組中。把指定的資源當(dāng)做一個(gè)資源組,并在其下創(chuàng)建/追加一個(gè)新的元素,使其隸屬于當(dāng)前資源。刪除?指定的元素。

PUT 和 DELETE 方法是冪等方法。GET方法是安全方法?(不會(huì)對(duì)服務(wù)器端有修改,因此當(dāng)然也是冪等的)。

不像基于SOAP的Web服務(wù),RESTful Web服務(wù)并沒有的“正式”標(biāo)準(zhǔn)[2]。 這是因?yàn)镽EST是一種架構(gòu),而SOAP只是一個(gè)協(xié)議。雖然REST不是一個(gè)標(biāo)準(zhǔn),但在實(shí)現(xiàn)RESTful Web服務(wù)時(shí)可以使用其他各種標(biāo)準(zhǔn)(比如HTTP,URL,XML,PNG等)。

實(shí)現(xiàn)舉例[編輯]

例如,一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)商店應(yīng)用,

列舉所有商品,

GET?http://www.store.com/products

呈現(xiàn)某一件商品,

GET?http://www.store.com/product/12345

下單購(gòu)買,

POST?http://www.store.com/order <purchase-order><item>?...?</item1> </purchase-order>

REST的優(yōu)點(diǎn)

  • 可更高效利用緩存來提高響應(yīng)速度

  • 通訊本身的無狀態(tài)性可以讓不同的服務(wù)器的處理一系列請(qǐng)求中的不同請(qǐng)求,提高服務(wù)器的擴(kuò)展性

  • 瀏覽器即可作為客戶端,簡(jiǎn)化軟件需求

  • 相對(duì)于其他疊加在HTTP協(xié)議之上的機(jī)制,REST的軟件依賴性更小

  • 不需要額外的資源發(fā)現(xiàn)機(jī)制

  • 在軟件技術(shù)演進(jìn)中的長(zhǎng)期的兼容性更好

默認(rèn)所有輸入輸出均為JSON格式。一個(gè)例外:GET請(qǐng)求的參數(shù)為URL參數(shù)
出錯(cuò)代碼一律使用HTTP標(biāo)準(zhǔn)錯(cuò)誤碼,參見HTTP 標(biāo)準(zhǔn)狀態(tài)碼

修改用戶:

????URL: POST /mm/v1/crm/customer/[customer id]
輸入:
參數(shù)名 參數(shù)類型 說明 必填 默認(rèn)值 限制
name string 客戶名稱 是 ??
interface_person string 對(duì)接人姓名 是 ??
interface_phonenumber string 對(duì)接人電話 是 ??
interface_email string 對(duì)接人郵箱 是 ??

輸出:
參數(shù)名 參數(shù)類型 說明 樣例值
id int 客戶ID 10001
name string 客戶名稱 銀行
interface_person string 對(duì)接人姓名 小明
interface_phonenumber string 對(duì)接人電話 12345678
interface_email string 對(duì)接人郵箱 misdfu@asdfasdf.com
create_time date 客戶創(chuàng)建時(shí)間 2015-04-01 12:34:56

獲得所有可編輯權(quán)限
URL: GET /mm/v1/crm/permission
輸入
輸出
一個(gè)數(shù)組。每個(gè)元素代表一個(gè)可編輯的權(quán)限項(xiàng),格式如下
參數(shù)名 參數(shù)類型 說明 樣例值
id int 權(quán)限ID 1
name string 權(quán)限名稱 DEMO APP

刪除用戶

URL:DELETE /mm/v1/crm/customer/[customer id]
輸入:無
輸出:
參數(shù)名 ????參數(shù)類型 ????說明???? ????????????樣例值
id???????????? int????? 成功刪除的客戶ID???? 10001

總結(jié)

以上是生活随笔為你收集整理的RESTful设计原则和样例(开发前后台接口)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。