【发布时间】:2020-01-08 14:46:27
【问题描述】:
我正在寻找设计建议。外部供应商通过 HTTP POST 请求向我发送数据,我将在我的 Java 应用程序中使用这些数据。我需要使用该数据,然后将其显示在新的浏览器网页中。
目前,我使用 POST 请求,将数据存储在缓存中,然后让供应商将用户重定向到我的 Angular UI 页面,该页面执行 HTTP Get 并检索刚刚发布的数据,然后我清除缓存。
它有效,但我知道这不是处理这个问题的最佳方法。有什么想法吗?
这是我的控制器类代码的简化版本
公共类 myController {
@Inject
IVendorObject obj;
@Inject
CacheManager cache;
@POST
@Path("/post-vendor-data")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response createThisObject(@Valid VendorObject obj) {
cache.put("myKey", obj);
return Response.ok(OBJ).build();
}
@GET
@Path("/get-vendor-data")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public VendorObject getThisObject() {
obj = cache.get("myKey");
cache.remove("myKey");
return obj;
}
}
【问题讨论】:
-
供应商可以在开始时通过 POST 请求重定向到您的 UI 页面,其中包含现在缓存的所有数据。我希望:)
-
也许我误解了你,但我不相信你可以直接向 UI 页面发送 POST 请求,除非它是一个简单的 HTML 表单帖子。
-
有可能,而且被广泛使用
-
如果数据应该只显示在一页上,那么所有接收到的数据都可以存储在
script标签中作为json返回的html中。否则我会将数据保存在用户的 http 会话中。 -
谢谢,我正在探索第一个选项。