第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在REST中進(jìn)行交易?

在REST中進(jìn)行交易?

收到一只叮咚 2019-12-09 09:21:22
我想知道您如何在REST中實現(xiàn)以下用例。是否有可能在不損害概念模型的情況下做?在單個事務(wù)范圍內(nèi)讀取或更新多個資源。例如,將$ 100從Bob的銀行帳戶轉(zhuǎn)入John的帳戶。據(jù)我所知,實現(xiàn)這一目標(biāo)的唯一方法是作弊。您可以發(fā)布到與John或Bob關(guān)聯(lián)的資源,并使用一個事務(wù)執(zhí)行整個操作。就我而言,這破壞了REST架構(gòu),因為您實際上是通過POST來傳送RPC調(diào)用的通道,而不是真正對單個資源進(jìn)行操作。
查看完整描述

3 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗 獲得超2個贊

考慮一個RESTful購物籃方案。從概念上講,購物籃是您的事務(wù)包裝器。您可以將多個項目添加到購物籃中,然后提交該購物籃來處理訂單,方法與您可以將Bob的帳戶條目添加到事務(wù)包裝器中,然后將Bill的帳戶條目添加到包裝器中一樣。當(dāng)所有部件都放置到位后,您可以將所有組件部件進(jìn)行POST / PUT事務(wù)包裝。


查看完整回答
反對 回復(fù) 2019-12-09
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗 獲得超8個贊

有幾個重要的問題沒有被這個問題回答,我認(rèn)為這太糟糕了,因為它在Google的搜索詞中排名很高:-)


具體來說,一個不錯的選擇是:如果您兩次發(fā)布(由于中間存儲區(qū)中的某些高速緩存被打斷),則不應(yīng)兩次進(jìn)行轉(zhuǎn)賬。


為此,您將事務(wù)創(chuàng)建為對象。這可能包含您已經(jīng)知道的所有數(shù)據(jù),并使事務(wù)處于掛起狀態(tài)。


POST /transfer/txn

{"source":"john's account", "destination":"bob's account", "amount":10}


{"id":"/transfer/txn/12345", "state":"pending", "source":...}

有了該事務(wù)后,就可以提交它,例如:


PUT /transfer/txn/12345

{"id":"/transfer/txn/12345", "state":"committed", ...}


{"id":"/transfer/txn/12345", "state":"committed", ...}

注意,在這一點上,多次認(rèn)沽并不重要。甚至在txn上的GET都將返回當(dāng)前狀態(tài)。具體來說,第二個PUT會檢測到第一個PUT已經(jīng)處于適當(dāng)?shù)臓顟B(tài),然后將其返回-或者,如果在它已經(jīng)處于“提交”狀態(tài)之后嘗試將其置于“回滾”狀態(tài),則會得到一個錯誤,并將實際的已提交事務(wù)退回。


只要與單個數(shù)據(jù)庫或具有集成事務(wù)監(jiān)控器的數(shù)據(jù)庫進(jìn)行對話,該機制實際上就可以正常工作。您可能還會引入事務(wù)超時,如果需要,甚至可以使用Expires標(biāo)頭表示。


查看完整回答
反對 回復(fù) 2019-12-09
?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗 獲得超3個贊

用REST術(shù)語來說,資源是可以與CRUD(創(chuàng)建/讀取/更新/刪除)動詞配合使用的名詞。由于沒有“轉(zhuǎn)移資金”動詞,因此我們需要定義一個可以使用CRUD進(jìn)行操作的“交易”資源。這是HTTP + POX中的示例。第一步是創(chuàng)建(HTTP POST方法)一個新的空事務(wù):


POST /transaction

這將返回交易ID,例如“ 1234”,并返回URL“ / transaction / 1234”。請注意,多次觸發(fā)此POST不會創(chuàng)建具有多個ID的同一事務(wù),并且還避免引入“待處理”狀態(tài)。另外,POST不一定總是冪等的(REST要求),因此通常最好的做法是最小化POST中的數(shù)據(jù)。


您可以將事務(wù)ID的生成留給客戶。在這種情況下,您可以POST / transaction / 1234創(chuàng)建事務(wù)“ 1234”,并且服務(wù)器將返回錯誤(如果已存在)。在錯誤響應(yīng)中,服務(wù)器可以返回帶有適當(dāng)URL的當(dāng)前未使用的ID。用GET方法向服務(wù)器查詢新ID并不是一個好主意,因為GET絕不應(yīng)更改服務(wù)器狀態(tài),而創(chuàng)建/保留新ID會更改服務(wù)器狀態(tài)。


接下來,我們使用所有數(shù)據(jù)更新(PUT HTTP方法)事務(wù),隱式提交:


PUT /transaction/1234

<transaction>

  <from>/account/john</from>

  <to>/account/bob</to>

  <amount>100</amount>

</transaction>

如果之前已對ID為“ 1234”的事務(wù)進(jìn)行了PUT,則服務(wù)器將給出錯誤響應(yīng),否則將給出OK響應(yīng)以及用于查看已完成事務(wù)的URL。


注意:在/ account / john中,“ john”應(yīng)該確實是John的唯一帳號。


查看完整回答
反對 回復(fù) 2019-12-09
  • 3 回答
  • 0 關(guān)注
  • 526 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號