주소 API 사용
API : 애플리케이션 인터페이스
주소를 요청해서 기능구현을 하는것이다.
들어가면 체험하기 탭이있다.
체험하기를 누르면 api가 나오는 것을 볼 수 있다.
위와 같은 체험하기를 통해서 내가 만들 서버에 어떤 것을 만들어야 할지 대략적으로 그려보는 것이다.
이제 api를 요청하는 방법
이제 api를 요청하기 위한 방법을 알아본다
위 가이드대로 url을 설정하면
https://www.juso.go.kr/addrlink/addrlinkurl.do?comfmkey="승인키"&returnUrl=http://localhost:8000
어떤 contentType으로 데이터를 보내는지 알려주지 않는다. 굉장히 불친절한 문서다
그래서 직접 테스트를 해서 어떤 타입으로 데이터가 오는지 알아봐야 한다.
설정을 해주고 신청하기를 누르면 승인키를 알려준다.
해당 url을 미리 알아본 방식으로 호출하면 정상적으로 api가 호출된다.
주소를 입력을 한다.
내가 설정한 returnUrl로 리다이렉션 되는 것을 확인할 수 있다.
오류가 나는 이유는 내가 만든 스프링 서버에는 post로 응답해주는 소스코드가 없어서 그렇다.
만들어보자
주소 API연동
가이드를 먼저 참고해본다.
이런 가이드를 보고 참고를 하거나 테스트를 실행할 때 정말 중요한 사항은 똑같은 환경을 맞춰주는 것이다
스프링은 MVC패턴을 강제하기 위해서 jsp파일을 직관적으로 실행할 수 없다. 그래서 꼭 스프링에서 수정하기보단 다이내믹 웹 프로젝트로 jsp를 실행해서 직관적으로 테스트 후에 이 api에 대한 개념을 먼저 잡고 나서 자신의 환경에서 테스트하는 습관이 중요하다.
참고로 jsp는 내장 톰켓이 아니기 때문에 톰캣을 설치해줘야 한다.
context base는 jsp프로젝트가 프로젝트마다 주소 이름을 정해주는 설정이다. 보통 해당 프로잭트의 이름으로 설정돼있다.
sample.jsp의 구조를 보면
팝업을 클릭하면 goPopup함수가 실행된다고 합니다
context base를 확인한 후 해당 주소를 수정해 준 뒤에 실행을 시켜보면 아래와 같이 나옵니다.
위 페이지를 보고 필요한 부분만 디자인을 남기고 필요한 데이터만 받아서 처리될 수 있도록 코드를 수정한다.
여기에 승인키를 입력한다.
자바스크립트 문법에 맞게 수정해 줍니다. 그리고 필요한데이터만 받기 위해서 안 쓰는 코드는 삭제해준다
이제 제공해주는 sample의 코드를 파악했으니 필요한 부분만 긁어와서 스프링에 넣기만 하면 끝이다.
하지만 스프링은 MVC패턴을 강제하기 때문에 좀 더 수정이 필요하다
스프링은 mvc패턴을 강제하기 때문에 jsp파일에 접근을 할 수 없다. 즉 파일끼리도 접근을 할 수 없다.
그래서 컨트롤러를 사용해서 데이터를 주고받도록 설정해 줘야한다.
최초 요청 시에 get으로 창을 띄우고 데이터를 가져올 때는 post타입으로 데이터가 ResponseBody에 담겨오니까 어떻게 담겨오는지 테스트를 해본다.
데이터를 보내기 위해서 request를 받아서 하려면 파일끼리 통신을 하는 방식이다. 주소 api가 서버에 요청해서 들고 올 때 컨트롤러가 데이터를 메모리에 띄우기 때문에 메모리에 있는 데이터를 찾기 위해서 addAttribute를 해준 것이다. 왜냐하면 컨트롤러에서 데이터를 받은 시점부터 responseBody에 데이터가 없다(컨트롤러가 데이터를 들고갔기때문). 그래서 위 상황에서는 메모리에 있는 데이터를 받아야 한다.
'Springboot' 카테고리의 다른 글
Springboot사용해서 블로그 만들기 글쓰기기능(summernote에디터사용) 추가와 상세보기 페이지(삭제,수정) 회원정보 변경 (0) | 2021.07.07 |
---|---|
SDK사용해서 SMS서비스 만들기 (0) | 2021.07.06 |
Spring boot/JPA 실습 양뱡향 매핑, 지연 로딩(lazy loading), 영속성 컨텍스트, toString오류와 noSession오류 (0) | 2021.07.02 |
Spring boot/JPA /DB 기본 개념 테이블과 오브젝트(2){JPA의 ORM기술} (0) | 2021.07.01 |
Spring boot/JPA / DB 기본 개념 테이블과 오브젝트 (1){join} (0) | 2021.06.30 |