일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- maver 외부 jar 배포
- 외부 라이브러리 jar 배포
- maven jar 배포
- map multivaluemap
- 자바스크립트
- maven 외부 라이브러리 배포
- map vs multivaluemap
- 자바object다형성
- object 배열
- Object
- java object 클래스
- 졸프
- 스프링
- niceid_v1.1.jar maven
- nice_v1.1.jar
- 도커 컨테이너에 mysql
- 자바
- object tostring
- java
- object 다형성
- object배열
- maven systempath
- 배포시 systempath
- Spring
- object다형성
- java object 다형성
- maven repository jar
- 맥북 port kill
- javascript
- JS
- Today
- Total
모래블로그
[스프링] Spring UriComponents 본문
1. UriComponents란?
UriComponents는 URI를 동적으로 생성해주는 클래스다.
UriComponents를 사용하면 파라미터 값을 지정하거나 변경하는 일이 쉬워진다. 원하는 URI로 각각의 링크를 생성할 수 있어서 Rest 스타일로 개발하는데 편리하다.
2. UriComponentsBuilder란?
UriComponentsBuilder는 클래스 명에서 유추할 수 있듯이, UriComponents를 build 할 수 있도록 도와주는 클래스이다.
UriComponents 클래스의 생성자는 모두 package-private 또는 private 이기 때문에, 개발자가 이를 직접 구현하지 않는 이상 생성자를 통해 직접 생성할 수는 없다.
우리는 생성자를 이용하는 대신, UriComponentsBuilder 클래스를 이용하여 UriComponents 의 인스턴스를 생성할 수 있다.
<생성 방법>
① Static Factory Method 중에 하나를 이용하여 UriComponentsBuilder 객체를 생성한다.
[Static Factory Method의 종류]
- newInstance()
- fromPath(String)
- fromUri (URI)
- fromUriString (String)
- fromHttpUrl (String)
- fromHttpRequest (HttpRequest)
- fromOriginHeader (String)
② 대응되는 각 메서드를 이용하여 URI 구성요소를 설정하거나 인코딩을 설정한다.
- scheme(String)
- userInfo(String)
- host(String)
- port(String or int)
- path(String)
- queryParam(String, Object...)
- queryParams(MultiValueMap<String, String>)
- fragment(String)
- encode(void or Charset) : void일 경우 UTF-8 로 인코딩
- expand(Map<String, ?> or Object... or UriTemplateVariables) : URI 템플릿 변수 값을 지정
③ build() 메서드를 이용하여 UriComponents 인스턴스를 build
or buildAndExpand() 메서드를 이용하여 URI 템플릿 변수를 설정한 후 build
위 세 단계를 거치게 되면 최종적으로 UriComponents 인스턴스가 생성된다.
그러면 이제 UriComponents의 toUri() 메서드를 이용하여 URI 객체로 변환한 후, 이를 이용해 원하는 작업을 수행해도 되고, uriString() 메서드를 이용해 String 형태의 URI를 얻어낸 후 이용해도 된다.
그럼, open api를 이용해서 엘리베이터 데이터를 받아와보자.
3. open api 사용해서 데이터 받아오기
요청 메세지 예시에는
http://openapi.elevator.go.kr/openapi/service/ElevatorOperationService/getOperationInfoList?serviceKey=인증키&buld_address=창원시 마산합포구&pageNo=1&numOfRows=10
이렇게 써있었다.
요청 메세지 명세를 보니, serviceKey와 buld_address, numOfRows, pageNo가 필수 파라미터구나!
나는 fromHttpUrl을 사용해서 그 안에 url을 넣어 UriComponentsBuilder 객체를 생성했고,
queryParam에는 필수 파라미터인 buld_address, numOfRows, pageNo를 넣어주고,
build() 메서드를 이용해서 빌드해줬다.
우리 졸업프로젝트에 썼던 예시
public Object elevatorAPI() {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders(); //헤더
UriComponents uri = UriComponentsBuilder
.fromHttpUrl(elevator_url)
.queryParam("serviceKey", elevator_apikey) //서비스키
.queryParam("buld_address", address) //주소
.queryParam("numOfRows", 1) // 개수
.queryParam("pageNo", 1)
.build();
ResponseEntity<String> result = restTemplate.exchange(uri.toUriString(), HttpMethod.GET, new HttpEntity<String>(headers), String.class);
}
}
결과가 잘 받아와졌다.
'Framework > Spring' 카테고리의 다른 글
[스프링] Spring 의존성 주입 방법 및 생성자 주입 방법의 장점 (0) | 2023.11.22 |
---|---|
[스프링] Spring WebClient (0) | 2023.11.22 |
[스프링] Spring json 파싱하기 (1) | 2023.11.22 |
[스프링] Spring RestTemplate (0) | 2023.11.22 |
REST API란 (0) | 2023.11.22 |