본문 바로가기

프로그래밍/Spring Boot 프로젝트

항공사 플랫폼 팀 프로젝트_RestTemplate 국가 API 활용 국적 가져오기

반응형

국가 API 활용 국적 가져오기 - RestTemplate 활용

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

진행 순서

  1. 공공데이터 포털에서 사용할 국적 api 조회 후 신청
  2. 요청 주소와 서비스키를 이용하여 요청
  3. 응답된 JSON 데이터를 jsonschema2pojo를 사용해 데이터 파싱 
  4. 공공데이터 포털의 요청변수와 출력 결과의 항목 구분을 보고 필요한 국적 데이터만 갖고 와서 출력

응답된 JSON 데이터

jsonschema2pojo 사용법

 

Json_Gson 다운로드, jsonschema2pojo 사용법

Gson은 구글에서 만든 json구조의 데이터를 JAVA의 객체로 만들어주기 위해 사용하는 자바 라이브러리입니다. Gson 다운로드아래 링크에 들어가 원하는 버전을 누릅니다. (저는 2.8.9 버전을 사용하였

spyair.tistory.com

 
 

NationDto

1
2
3
4
5
6
7
@Generated("jsonschema2pojo")
@Data
@JsonNaming(value=PropertyNamingStrategies.SnakeCaseStrategy.class)
public class NationDto {
    public Integer currentCount;
    public List data;
}
cs

 
 

Datum

1
2
3
4
5
6
7
8
9
10
@Generated("jsonschema2pojo")
@Data
@JsonNaming(value=PropertyNamingStrategies.SnakeCaseStrategy.class)
public class Datum {
    // public String countryEngNm;
    // public String countryIsoAlp2;
    public String countryNm;
    // public String isoAlp3;
    // public String isoNum;
}
cs

 
 

controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@GetMapping("/nation")
public String restTEmplate1(Model model) {
    URI uri = null;
    try {
        uri = new URI("http://apis.data.go.kr/1262000/CountryCodeService2/getCountryCodeList2?serviceKey=Cuo5MmMb2QEiC58RNfbyKZ3q7MF%2F5mvNSC%2FXcSI%2F9mkEK8Blx2zD5dULoP9UK0MaSi049JL%2BUmo7K%2FHXgEH9dQ%3D%3D&numOfRows=1000&pageNo=1");
    } catch (URISyntaxException e) {
        e.pringStackTrace();
    }
    
    RestTemplate restTemplate = new RestTemplate();
    // RestTemplate에서 사용할 수 있는 대표적 메서드 확인 !
    ResponseEntity<NationDto> response = restTemplate.getForEntity(uri, NationDto.class);
    
    ArrayList<String> countryNms = new ArrayList<>();
    for(int i = 0; i < response.getBody().getData().size(); i++) {
        countryNms.add(response.getBody().getData().get(i).getCountryNm());
    }
    
    model.addAtrribute("countryNms", countryNms);
    return "/반환할 페이지 주소";
    
}
cs

→ 데이터베이스에 접근하지 않고 model로 바로 값을 내려줌.
→ 데이터베이스에 값을 넣고 싶다면 반복문에 insert 처리 후 select 하기

반응형