簡體   English   中英

使用來自寧靜的Web服務端點調用的響應,以便稍后在其他一些Web服務EndPoint調用中使用

[英]Use response from a restful webservice endpoint call to be used later on in some other webservice endPoint call

我希望一個Web服務調用的響應稍后被其他Web服務調用使用。 我如何實現它的代碼流。 我需要維持一個會話嗎? 我正在使用Spring,java創建寧靜的Web服務,如果用戶1調用了一個EndPoint / getUserRecord,並且一分鍾后調用了/ checkUserRecord,它使用了第一次調用中的數據,那么由於用戶2可以在用戶1調用/ checkUserRecord之前先調用/ getUserRecord,因此如何處理它我正在使用Spring Java創建RESTFul Web服務。

謝謝,Arpit

如果您使用的是Spring Boot,它提供了一種在您的存儲庫對象上啟用緩存的方法,而這正是您要解決的問題。

@EnableCaching
org.springframework.cache.annotation.EnableCaching

您可以在創建密鑰時將UserID用作哈希屬性,以使來自不同用戶的響應保持唯一。

從技術上講,您可以從get傳遞UserRecord進行檢查。

GET / userrecords /->返回一個或多個記錄

POST / checkUserRecord與要作為請求正文進行檢查的記錄。

但我強烈建議您不要這樣做 客戶端提供的數據不可靠,后端代碼無法信任它們。 如果某些javascript更改了原始數據怎么辦? 此外,如果您有要來回傳遞的數據或異構負載列表,最終將導致客戶端和服務器之間的負載交換完全混亂。

因此,正如Veselin Davidov所說的那樣,您應該堅持使用干凈的無狀態REST范例並依靠標識符:

所以

GET / userrecords /-> [{“ id”:1,“ data”:“ myrecorddata”},...]

GET / checkUserRecord / {id}像/ checkUserRecord / 1

是的,您將必須對數據庫進行兩次調用。 如果您關心性能,可以按照piy26的說明設置一些緩存機制,但是緩存可能會導致您遇到其他問題(如何定義適當且可靠的緩存策略?)。

除非您管理大量數據,否則我認為您首先應該專注於提供具有無狀態設計的清晰,可維護且安全可用的REST API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM