首页 > 解决方案 > 我可以使用 Spring Boot 使用别人的 API 发出请求吗?

问题描述

我是 Spring 新手,我试图理解它。我可以使用 Spring boot 调用别人的 api 吗?例如,我使用的 api 需要使用他们给我的凭据进行身份验证。我想使用他们的 API 来发出 POST 请求。到目前为止,我已经找到了与使用您自己的 API 相关的文档。这些请求也需要传递标头。

使用 Spring 传递我的凭据和所需的标头,我可以执行 POST 请求的最简单方法是什么?

任何帮助,将不胜感激。

标签: javaspringrestapi

解决方案


如果我很了解你,你需要发布另一个带有凭据的 web-api 好的,你可以使用

  • restTemplate 像下面的例子
 public List<EtisAccount> getAllActiveAccount(){
        logger.debug("Debug: in Class \t"+this.getClass().getName()+" Method Name is: \t"+new Object() {}.getClass().getEnclosingMethod().getName());
        Properties sprinklrProp=sprinklrProperties.getSprinklrKeys();
        SprinklrCredential sprinklrCredential=credentialBuilder.getSprinklrCredential();
        RestTemplate restTemplate= new RestTemplate();
        HttpHeaders header = new HttpHeaders();
        header.setBearerAuth(sprinklrCredential.getAccess_token());
        header.add("key", sprinklrCredential.getApi_key());
        header.set("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE);
        UriComponentsBuilder uriBuilder= UriComponentsBuilder.fromUriString(sprinklrProp.getProperty("sprinlrUri").toString())
                .queryParam("types", sprinklrProp.getProperty("accountTypes").toString());
        HttpEntity<String> entity= new HttpEntity<>(header);
        sslCertificateValidation.disable();
        ResponseEntity<String> sprinklrResponse=restTemplate.exchange(uriBuilder.toUriString(),HttpMethod.GET,entity,  String.class);
        List<EtisAccount> activeAccouts=etisAccountHelper.getAllSocialEtisAccounts(sprinklrResponse.getBody());
        logger.debug(String.valueOf(sprinklrResponse.getStatusCodeValue()));
        logger.debug(activeAccouts.toString());
        return activeAccouts;
    }

这是使用 RestTemplate 调用在线 API 的示例示例

在这里,我使用凭据构建标头(承载身份验证)

        HttpHeaders header = new HttpHeaders();
        header.setBearerAuth(sprinklrCredential.getAccess_token());
        header.add("key", sprinklrCredential.getApi_key());
        header.set("Accept", MediaType.APPLICATION_JSON_UTF8_VALUE);

在这里我添加标头requestEntity以添加到resttemplate请求

     HttpEntity<String> entity= new HttpEntity<>(header);

在这里我使用交换方法得到响应

   ResponseEntity<String> sprinklrResponse=restTemplate.exchange(uriBuilder.toUriString(),HttpMethod.POST,entity,  String.class);

推荐阅读