티스토리 뷰

728x90

 

2023.03.28 - [ETC] - [SPRING] 음료 주문 api 프로젝트 - 1 (프로젝트 소개)

 

[SPRING] 음료 주문 api 프로젝트 - 1 (프로젝트 소개)

1. 프로젝트 주제 스타벅스 사이렌오더와 유사한 음료를 주문 할수 있는 백엔드 api 2. 프로젝트 기획 배경(목적) 스프링을 공부하는 과정에서 배운것들을 바탕으로 새로운 프로젝트를 진행하면

hy-ung.tistory.com

 

음료 주문 api 프로젝트 진행하면서 사용한 기술 한가지에 대해 회고 하고자 한다.

 

 

1. 사용한 기술

 

현재 위치를 기반으로 가까운 스타벅스 지점을 2곳을 찾아서 응답하는 api 를 구현하였다.

이때 google map api 중에서 place api 를 사용하여 현재 위치의 위도, 경도 값을 가져와서 해당 값 기준으로 주변 스타벅스 지점을 호출하였다.

받아온 스타벅스 지점의 위도 경도 값과 현재 위치의 위도 경도 값을 거리 계산을 하여 가까운 거리 두곳을 응답하였다.

 

2. 해당 기술 구현하면서 발생한 문제점

1) google map api 를 활용하여 현재 주소를 문자열을 파라미터 값으로 넣어 주었을 때 숫자가 들어간 부분은 파라미터 값에서 일부가 넘어가지 않았다.

 

2) google map api 의 응답 값이 크롬에서는 한글로 응답을 받았지만, 인텔리제이에서는 영문으로 응답을 받았다.

 

3) 두 장소의 거리 계산을 하기 위해서 google map api 중에서 Distance Matrix API 을 사용하여 구현하고자 하였다.

Distance Matrix API 는 두 지점의 거리와 이동수단을 통한 걸리는 소요시간을 계산하는 api 였다. 파라미터 값에 이동 수단을 walking 으로 넣어 주면 오류가 되었고 디폴트 값으로 했을 때는 일부 지역은 거리 계산이 되었지만 일부 지역에 대해서는 거리 계산이 되지 않았다.

 

3. 해결 방식

1) Rest template 을 사용하기 전에 문자열로 받은 현재 주소에서 띄어 쓰기 부분은 모두 %20 으로 변환하여 사용하였다.

이때는 응답에 문제가 없었는데 Rest template 을 적용하면서 url 을 Uricomponents 를 사용하였더니 인코딩 과정에서 숫자 부분이 이상하게 적용이 되었다.

이것을 %20 에서 + 로 변경하였더니 문제가 해결되었다.

 

2) 파라미터 값에 language=ko 를 추가하여 한글로 응답을 받을 수 있었다.

 

3) 거리 계산을 google map api 를 사용하지 않고 두 지점의 위도, 경도 값을 바탕으로 거리 계산식을 통하여 해결하였다.

 

4. 3 의 방식으로 해결한 이유

google map api 를 통하여 두 지점의 거리 정보를 받아 올때 거리 계산이 안되는 장소가 있었으며, 정확한 거리 계산을 위해서 위도, 경도 값을 통하여 두 지점의 거리를 계산 할수 있다는 것을 알게 되어 적용하였다.

 

5. 다른 방식으로 구현한다면 어떤 기술을 활용해볼 수 있을 까?

거리 계산 방식을 카카오 맵 api 를 통해서 구현 해볼수 있을 것 같다.

728x90