주니봉
  • [JAVA] RestTemplate 사용 JSON API 통신
    2021년 01월 14일 13시 14분 58초에 업로드 된 글입니다.
    작성자: 봉주니

    API를 이용하여 개발을 많이 하다보니 RestTemplate을 자주 사용한다.

     

    JSON 이란?

    Java Script Object Notation 의 줄임말로 속성-값 쌍 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 

     

    JSON을 쓰기 위해 json-simple jar를 사용합니다.

     

    Maven을 사용하는 경우 pom.xml 에 dependency 설정으로 간단하게 처리됩니다.

     

    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>

    하지만 저는 gradle 프로젝트를 사용하므로 아래와 같이 사용합니다.

    1. 파일 다운로드

    json-simple-1.1.1.jar
    0.02MB

     

     

    2. 일반적으로 web환경 프로젝트일 경우 WEB-INF 파일 아래에 lib 폴더를 생성 후 해당 파일을 넣어주시면 됩니다.

    gradle 프로젝트인 경우 아래와 같이 만듭니다.

    3. build.gradle 파일에 추가해줍니다.

     

    /*
     * This build file was auto generated by running the Gradle 'init' task
     * by 'lglis' at '21. 1. 14 오후 12:12' with Gradle 3.0
     *
     * This generated file contains a sample Java project to get you started.
     * For more details take a look at the Java Quickstart chapter in the Gradle
     * user guide available at https://docs.gradle.org/3.0/userguide/tutorial_java_projects.html
     */
    
    // Apply the java plugin to add support for Java
    apply plugin: 'java'
    
    // In this section you declare where to find the dependencies of your project
    repositories {
        // Use 'jcenter' for resolving your dependencies.
        // You can declare any Maven/Ivy/file repository here.
        jcenter()
    }
    
    // In this section you declare the dependencies for your production and test code
    dependencies {
        // The production code uses the SLF4J logging API at compile time
        compile 'org.slf4j:slf4j-api:1.7.21'
        compile files('lib/json-simple-1.1.1.jar')
    
        // Declare the dependency for your favourite test framework you want to use in your tests.
        // TestNG is also supported by the Gradle Test task. Just change the
        // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
        // 'test.useTestNG()' to your build script.
        testCompile 'junit:junit:4.12'
    }
    

     

    서비스 코드는 아래와 같이 사용합니다.

     

    public void jsonTest(Map<String, Object> parameter){
    	String restRequestUrl = 해당 URL;
        
        RestTemplate restTemplate = new RestTemplate();
    	JSONObject jsonObject = new JSONObject();
        
        HttpHeaders headers = new HttpHeaders();
    	headers.setContentType(MediaType.APPLICATION_JSON);
        
        for( Map.Entry<String, Object> entry : map.entrySet() ) {
                String key = entry.getKey();
                Object value = entry.getValue();
                jsonObject.put(key, value);
        }
        
        ResponseEntity<HashMap> response = restTemplate.exchange(restRequestUrl, HttpMethod.POST, new HttpEntity<>(jsonObject.toString(),headers), HashMap.class);
    	            
        if (response.getStatusCode() != HttpStatus.OK) {
              logger.warn("error statusCode = {}, body={}", response.getStatusCode(), response.getBody());
        }
    
    }

     

    반응형

    'Java' 카테고리의 다른 글

    [JAVA] Decial format(#,##0 / #,### / 0,000)  (0) 2021.02.16
    [Java] 인터페이스 구현(연계 메커니즘)  (0) 2021.01.20
    URLENCODER URLDECODER  (0) 2021.01.11
    메일 replyto  (0) 2021.01.11
    if~else VS switch~case  (0) 2020.12.30
    댓글