繁体   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