我需要重用爲我以前的請求生成的值。如何在Paw rest客戶端中重用先前請求中的變量?
例如,在第一次請求時,我對URL/api/products/{UUID}進行POST並獲得帶有空主體的代碼201(Created)的HTTP響應。
而在第二個請求我想通過請求GET/api/products/{UUID}來獲得該產品,其中UUID應該來自第一個請求。
所以,問題是如何在請求之間存儲該UUID並重用它?
我需要重用爲我以前的請求生成的值。如何在Paw rest客戶端中重用先前請求中的變量?
例如,在第一次請求時,我對URL/api/products/{UUID}進行POST並獲得帶有空主體的代碼201(Created)的HTTP響應。
而在第二個請求我想通過請求GET/api/products/{UUID}來獲得該產品,其中UUID應該來自第一個請求。
所以,問題是如何在請求之間存儲該UUID並重用它?
問題出在你的第一個請求的答案。只是不返回「一個空的身體。」
如果你是在談論一個REST的設計,你將返回UUID的第一個請求,客戶端將在他的第二個呼叫時使用:GET/API /產品/ {UUID}
的基本思想背後REST是,服務器不存儲關於先前請求的任何信息,並且是「無狀態的」。
我也會調整你的第一個查詢。一般來說,服務器應該生成UUID並返回它(也許你有理由打破這一點,那麼請原諒我)。你的服務器(至少有時)有一個更好的隨機生成器,你可以避免衝突。所以,你通常會設計這樣的:
CLIENT: POST /api/products/ -> Server returns: 201 {product_id: UUID(1234...)}
Client: GET /api/products/{UUID} -> Server returns: 200 {product_detail1: ..., product_detail2: ...}
如果你的客戶「丟失」的信息,你希望他以後能得到他的產品,你通常會實現這樣的API端點:
Client: GET /api/products/ -> Server returns: 200 [{id:UUID(1234...), title:...}, {id:UUID(5678...),, title:...}]
這可能是如此簡單,它逃過你。所有你需要做的是創建一個文本文件,說UUID.txt:
(樣本數據說「12345678U910」在文件中的文本)
然後,所有你需要做的是將URL中的{UUID}替換爲文件的動態標記。刪除{UUID}部分,然後用鼠標右鍵單擊URL行它在哪裏,並選擇
添加動態價值 - >文件 - >文件內容:
你會得到一拖-N -drop接待窗口小部件:
或者按 「選擇文件...」 或拖放文件到接收器控件:
不要擔心動態變量令牌(URL中的藍色事物)不會改變...然後點擊其他地方,讓滴接收機走開,你將有你想要什麼,你可以在網址中使用或其他任何地方爲此事(報頭字段,表單域,體等)變量:
爪子是一個偉大的工具,當你探索動態價值的能力時,它會漸漸變得真棒。我發現的功能最強大的是正則表達式解析,它可以解析原始答覆HTML並捕獲下一個請求所需的任何內容......例如,如果您的UUID來自某個用戶輸入並被攝入服務器,則返回在html回覆中,您可以從回覆HTML中捕獲該信息,並將其重新注入URL或任何字段,甚至使用Paw的動態值功能將其添加到Cookie中。
您可以使用Request Sent
動態值https://paw.cloud/extensions?extension_type=dynamic_value&q=request+send這些將獲得您上次發送給定請求的請求時使用的值。
在你的情況,你會希望將URLSentValue
與RegExMatch
(https://paw.cloud/extensions/RegExMatch)相結合,首先得到的URL,因爲它是最後一個請求一起發送,然後從該網址提取的UUID。
如
@做下去,與第一請求發佈到端點沒有UUID和較爲正常的方式chickahoona的回答倒是服務器返回它。通過這種方式,您可以使用擴展名RegExpMatch從服務器的響應中提取值,並在隨後的請求中使用它。或者,如果您必須在客戶端生成UUID,那麼RegExpMatch擴展可以提供幫助,只需爲源選擇創建請求的URL並提供一個正則表達式,將UUID從其末尾剝離,例如如/([^/]+)$
。
第三個選項我會拋出給你,把UUID放在environment variable中,只需要你所有的請求都從那裏引用它。
問題是關於特定的REST客戶端(Paw),而不是關於設計API。 – igrybkov
對不起,沒有完成以前的答案。但是,沒有理由在服務器端生成UUID,因爲它可能在客戶端生成,並且僅在服務器上進行驗證。如果API端點沒有返回數據,則沒有理由將UUID從請求發送回客戶端,因爲它已經知道它。 – igrybkov