如何在springboot中使用RestTemplate将参数作为参数传递给端点?

问题描述 投票:0回答:1

我正在我的项目中使用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);
        }

    }
spring-boot post lambda resttemplate nestjs
1个回答
1
投票

好,按照说明进行:

  1. Create headers将是代表HTTP请求的数据结构。

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    
  2. org.json包中的构建JSONObject,它是一组可修改的名称/值映射,并放置名称和值。

    JSONObject requestBody = new JSONObject();
    requestBody.put("vehicleType", "US Mutual Fund,VIP");
    requestBody.put("source", "PCS_DATACACHE_TOPIC");
    
  3. 创建代表HTTP请求或响应的HttpEntity,在这种情况下,请求由标头和正文组成。

    HttpEntity<String> request = new HttpEntity<>(requestBody.toString(), headers);
    
  4. 通过posting创建给定URI模板的对象创建新资源。它返回自动转换为responseType参数中指定的类型的结果。然后,我们将ObjectNode定义为我们的资源,并将响应类型定义为我们的结果。

    ObjectNode result = restTemplate.postForObject("https://gdxdispatcher.dev.awstrp.net/dispatcher/service/api/message", 
                                                    request, ObjectNode.class);
    
© www.soinside.com 2019 - 2024. All rights reserved.