如何在 spring boot 中使用 RestTemplate 将参数作为 post 传递给端点?
How can I pass parameter as post to endpoint using RestTemplate in springboot?
我在我的项目中使用 RestTemplate 向端点发出 post 请求。基本上我有用 nestjs 编写的 lambda 函数。我正在我的 java 项目中注入 lambda 服务。如果 vehicleName if condition
通过,我想 POST 那个 vehicleName 到 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);
}
}
嗯,按照说明操作:
创建headers,这将是一个表示HTTP请求的数据结构。
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
从 org.json
包构建一个 JSONObject,它是一组可修改的 name/value 映射并放置名称和值。
JSONObject requestBody = new JSONObject();
requestBody.put("vehicleType", "US Mutual Fund,VIP");
requestBody.put("source", "PCS_DATACACHE_TOPIC");
创建代表 HTTP 请求或响应的 HttpEntity,在本例中请求由 headers 和 body 组成。
HttpEntity<String> request = new HttpEntity<>(requestBody.toString(), headers);
通过发布一个object到给定的URI
模板来创建新资源。
它 returns 结果自动转换为 responseType 参数中指定的类型。
然后我们定义一个 ObjectNode
作为我们的资源和响应类型作为我们的结果。
ObjectNode result = restTemplate.postForObject("https://gdxdispatcher.dev.awstrp.net/dispatcher/service/api/message",
request, ObjectNode.class);
我在我的项目中使用 RestTemplate 向端点发出 post 请求。基本上我有用 nestjs 编写的 lambda 函数。我正在我的 java 项目中注入 lambda 服务。如果 vehicleName if condition
通过,我想 POST 那个 vehicleName 到 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);
}
}
嗯,按照说明操作:
创建headers,这将是一个表示HTTP请求的数据结构。
HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON);
从
org.json
包构建一个 JSONObject,它是一组可修改的 name/value 映射并放置名称和值。JSONObject requestBody = new JSONObject(); requestBody.put("vehicleType", "US Mutual Fund,VIP"); requestBody.put("source", "PCS_DATACACHE_TOPIC");
创建代表 HTTP 请求或响应的 HttpEntity,在本例中请求由 headers 和 body 组成。
HttpEntity<String> request = new HttpEntity<>(requestBody.toString(), headers);
通过发布一个object到给定的
URI
模板来创建新资源。 它 returns 结果自动转换为 responseType 参数中指定的类型。 然后我们定义一个ObjectNode
作为我们的资源和响应类型作为我们的结果。ObjectNode result = restTemplate.postForObject("https://gdxdispatcher.dev.awstrp.net/dispatcher/service/api/message", request, ObjectNode.class);