java - 如何从 Java 中的后台服务发送 POST 请求?
问题描述
我目前正在开发一个 Java 应用程序,该应用程序从表 A 读取(存储 BLOB),将表 A 中的一些数据写入表 B,同时将 BLOB 数据上传到文件服务器。我在测试数据库(大约 400 行)上测试了该应用程序,它工作正常。我需要将应用程序实现为读取表 A 并将 HTTP POST 请求发送到 REST 服务器的后台服务,然后插入表 B 并上传到文件服务器。POST 请求后,服务器需要返回创建的 HTTP 202。我试过这样的事情:
@POST
@Path("attachments")
public void moveToMinio() throws Exception {
TiedostoDaoImpl tiedostoDao = new TiedostoDaoImpl();
List<Integer> id = tiedostoDao.getDistinctCustomerId();
for (Integer userId : id){
AttachmentService.insertAndUploadService(userId);
}
}
tieostoDao.getDistinctCustomerId() 从表 A 返回不同客户 ID 的列表,并将该 ID 传递给 for 循环内的 AttachmentService.insertAndUploadService()。这以某种方式完成了工作,但我怀疑这不是正确的方法,因为它返回 HTTP 200 而不是 202。这是发送 POST 请求的正确方法吗?生产数据库可能有数百万行,在不影响服务器效率的情况下处理所有这些行的正确方法是什么?由于我是 Java 新手,因此我已经坚持了一段时间,并且非常感谢任何帮助/建议。
解决方案
如果您希望在处理每一行之后有一个 http 响应,首先您需要将您的方法划分为一次处理一行,然后您可以使用 Response 来包含您的 http 代码和实体,如下所示:
@POST
@Path("attachments")
public Response moveToMinio() throws Exception {
TiedostoDaoImpl tiedostoDao = new TiedostoDaoImpl();
Integer userId = tiedostoDao.getOneCustomerId();
String uploadLink = AttachmentService.insertAndUploadService(userId);
return Response.status(Response.Status.ACCEPTED).entity(uploadLink).build();
}
推荐阅读
- node.js - Pm2 deploy Permission Denied for everythings
- c# - 使用 OnCollisionEnter() 检测到不存在的碰撞
- java - spring boot maven jar 执行顺序不一样
- electron - 电子:在简单的 hello world 应用程序中,无法查看默认菜单栏
- javascript - useEffect 中的数据初始化触发多个请求
- sql - 如何在 3 个 SQL 表中查找不匹配的值?
- c# - 无法连接到 redis 服务器;连接超时
- css - 相对定位的内容高于粘性定位的标题
- azure-devops - Azure DevOps Nuget 管道步骤中的 Nuget 包说明
- javascript - 使用正则表达式替换html标签外的特殊字符