betterthani / saveWallet

0 stars 0 forks source link

환율 API WebClient로 가져오기(서버투서버로 방식 변경) #5

Open betterthani opened 1 year ago

betterthani commented 1 year ago
  1. 프로퍼티 따로 관리한다 이유 : 설정에 필요한 프로퍼티 겹치지 않기 위해, 여러개의 api를 사용할 경우 분리해서 사용하는게 추후에 좋다.

-> api 연동문서에 필수로 필요한 설정값만 추가 class도 프로퍼티와 1:1 맵핑용도 -> ConfigurationProperites, PropertySource 어노테이션 참고

betterthani commented 1 year ago

도전 해볼 방법 : config 기반 여러개의 webClient를 자동으로 생성

betterthani commented 1 year ago

우선 1차 구현 성공 하였으나 프로퍼티 따로 관리해주지 않고 컨트롤러에서 JSON까지 불러오는데 성공하였다.

betterthani commented 1 year ago
  1. 의존성 추가

  2. webclient 인스턴스 생성을 builder방법으로 사용하였다.

  3. uribuild 설정을 도와주는 defaultUriBuilderFactory를 호출(baseurl을 받은 후 파라미터 인코딩을 하여 api키가 달라지지 않게 방지)

  4. 인코딩 모드는 VALUES_ONLY로 설정

  5. 응답값 요청은 get방식

    • baseURI및 파라미터를 지정해주는 부분인데 baseUrl을 이미 지정해 주었기에 뒤에 파라미터들을 uriBuilder로 build
    • 응답받게 해주는 retrieve() 메소드 사용
    • bodyToMono(String.class)로 responseBody를 String타입으로 받아줬다
    • webclient는 비동기 방식으로 block메소드를 이용해 동기방식으로 변경해준다. 이걸 붙여야 String형태로 바꿀수 있음.
  6. JSON형태로 자료를 받은 후 ObjectMapper를 이용하여 값을 받아왔다.

betterthani commented 1 year ago

datepicker로 값을 가져오는 방식은 @requestParm으로 해당 값 받은 후 ajax통신으로 연결해주고 있다.

model값에 변경된 값도 잘 받아지는걸 디버깅으로 확인하였으나, 기존의 값이 변경되지 않고 그대로 남아있다.

betterthani commented 1 year ago

location.href=기존경로 + 값 했을때 안 됐는데.. 여러 서칭에 돌고돌아 다시 원점으로 해보자 했는데 왠걸 됐다.. 허무하지만 이제 완벽하게 동작되서 뿌듯하다