使用来自restful webservice端点调用的响应,稍后将在其他一些webservice endPoint调用

时间:2018-04-25 05:44:41

标签: java spring rest web-services

我希望来自一个webservice调用的响应稍后被其他一些webservice调用使用。我如何为它实现代码流程。我必须保持会话吗? 我正在使用Spring,java创建restful webservices 如果用户1调用endPoint / getUserRecord并且1分钟后调用/ checkUserRecord使用来自第一次调用的数据,那么如何处理它,因为用户2可以在用户1调用/ checkUserRecord之前调用/ getUserRecord 我使用Spring java创建RESTFul webservices。

谢谢, Arpit

2 个答案:

答案 0 :(得分:0)

如果您使用的是Spring Boot,它提供了一种在Repository对象上启用缓存的方法,这就是您要解决的问题。

@EnableCaching
org.springframework.cache.annotation.EnableCaching

您可以在创建密钥时将UserID用作哈希属性,以便来自不同用户的响应保持唯一。

答案 1 :(得分:0)

从技术上讲,你可以从get到check检查传递UserRecord。

GET / userrecords / - >返回一个或多个记录

POST / checkUserRecord以及要作为请求体检查的记录。

但我强烈建议你不要这样做。客户端提供的数据不可靠,您的后端代码无法信任。如果某些javascript改变了原始数据怎么办?此外,如果您有来回传递的数据或异构有效负载列表,它将最终导致客户端和服务器的有效负载交换混乱。

正如Veselin Davidov所说,你应该坚持使用干净的无状态REST范例并依赖于标识符:

所以

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

GET / checkUserRecord / {id}喜欢/ checkUserRecord / 1

是的,您必须对数据库进行两次调用。如果您关注的是性能,可以设置一些缓存机制,如piy26所指出的那样,但缓存可能会引导您解决其他问题(如何定义正确可靠的缓存策略?)。

除非您管理大量数据,否则我认为您应该首先关注提供清晰,可维护且安全可用的REST API以及无状态设计。