spring-boot - 如何在springboot中使用RestTemplate将参数作为post传递给端点?
问题描述
我在我的项目中使用 RestTemplate 向端点发出发布请求。基本上我有用nestjs编写的lambda函数。我在我的 java 项目中注入 lambda 服务。如果vehicleName if condition
通过,我想将该车辆名称发布到url
. 关于如何实现这一目标有什么建议吗?我将使用此命令测试我的应用程序
curl -X POST "https://gdxdispatcher.dev.awstrp.net/dispatcher/service/api/message" -H "accept: */*" -H "Content-Type: application/json" -d "{\"vehicleType\":\"US Mutual Fund,VIP\",\"source\":\"PCS_DATACACHE_TOPIC\"}"
这是我的代码
private void callLambdaService(String vehicleTypesParamValue)
{
final String url = "http://localhost:3000/dispatcher/service/api/message";
final String zMETHOD = "callLambdaService - ";
RestTemplate restTemplate = new RestTemplate();
restTemplate.exchange("url", HttpMethod.POST, vehicleName, String.class);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
String result = restTemplate.getForObject(url, String.class);
VehicleType vehicleName=null;
String[] vehicleTypes = vehicleTypesParamValue.split(",");
Set<VehicleType> results = new HashSet<>();
try
{
for (String vehicleTypeParam : vehicleTypes)
{
vehicleName =
vehicleTypeFactory.getVehicleTypeByIspName(
vehicleTypeParam);
if (vehicleName == null)
{
LOGGER.warn("No codes for products or vehicle types were supplied");
}
else if (vehicleName.equals("US Mutual Fund"))
{
LOGGER.info(zMETHOD + "Vehicles provided: "
+ vehicleName.getIspName());
}
else
{
LOGGER.warn(
String.format("Unknown vehicle type provided: [%s]",
vehicleName.getIspName()));
}
}
}catch (Exception e) {
LOG.error("Unable to get vehicletype data", e);
}
}
解决方案
好吧,按照说明进行操作:
创建标头,这将是表示 HTTP 请求的数据结构。
HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON);
从包中构建一个JSONObject
org.json
,该包是一组可修改的名称/值映射并放置名称和值。JSONObject requestBody = new JSONObject(); requestBody.put("vehicleType", "US Mutual Fund,VIP"); requestBody.put("source", "PCS_DATACACHE_TOPIC");
创建表示 HTTP 请求或响应的HttpEntity ,在本例中,请求由标头和正文组成。
HttpEntity<String> request = new HttpEntity<>(requestBody.toString(), headers);
通过将对象发布到给定
URI
模板来创建新资源。它返回自动转换为 responseType 参数中指定的类型的结果。然后我们定义 aObjectNode
作为我们的资源和响应类型作为我们的结果。ObjectNode result = restTemplate.postForObject("https://gdxdispatcher.dev.awstrp.net/dispatcher/service/api/message", request, ObjectNode.class);
推荐阅读
- date - power bi 中的第二个最小日期
- javascript - 检测触摸用户何时在 JAVASCRIPT 中向上拉手指
- openmp - ALSA 外部插件和 C++ 中的 openmp
- reactjs - 在特定点打开 highcharts 工具提示 - React typescript highcharts
- vue.js - 如何在 vue 模板中使用 vnode
- time - 在时间序列中向图中添加阴影区域
- php - 在刀片中以 JSON 格式显示 JSON 数据存储(Laravel 8)
- sharepoint - 如何使用 Rest Api 获取与 Hub 站点关联的站点
- flutter - 添加双类型属性后,JsonSerializable 不返回对象
- javascript - 无法将简单的 svg 附加到正文元素