2022. 11. 3. 22:13
반응형

자바에서 api를 호출할 때 이용하면 좋은게 뭐가 있는지 찾아보다가 발견했다.

Spring Boot 프로젝트를 생성하면 별도의 dependency 추가 없이 기능을 이용할 수 있었다.

다시 생각해보니 org.springframework.boot:spring-boot-starter-web 디펜던시를 추가했어야 했다.

 

간단하게 get, post 예제를 만들어봤다.

post 예제에는 헤더에 정보를 담아 요청을 보내도록 했는데 get 예제에서도 헤더를 담을 수 있는지 확실히 모르겠다.

api는 plos라는 사이트의 검색 기능을 이용하는 것을 발견해서 예제에 썼다.

 

get 예제

    public void getTest() {
        RestTemplate template = new RestTemplate();
        String apiUrl = "https://api.plos.org/search?q=title:hope";
        Map res = template.getForObject(apiUrl, Map.class);
        System.out.println(res);
    }

post 예제

    public void postTest() {
        RestTemplate template = new RestTemplate();
        MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
        parameters.add("q", "title:test");

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        HttpEntity formEntity = new HttpEntity<>(parameters, headers);

        String apiUrl = "https://api.plos.org/search";
        Map res = template.postForObject(apiUrl, formEntity, Map.class);
        System.out.println(res);
    }

 

콘솔에 찍힌 결과의 일부를 스크린샷으로 찍어봤다.

참고로 결과를 String 형태로 얻고싶다면 Map.class 대신 String.class를 적으면 된다.

 

 

https://github.com/juragi/spring-demo/commit/e48488fc4f740677d33e2b911f97665573f95b50

 

RestTemplate 테스트 · juragi/spring-demo@e48488f

Showing 1 changed file with 40 additions and 0 deletions.

github.com

 

반응형