카테고리 없음

2022-10-13 개발일지

Leo.K 2022. 10. 13. 18:17

URL상에서 한글이 percent encoding을 utf-8을 기준으로 변환이 된다. 이를 대부분 한글로 바꾸어서 사용하지만 필자는 필요에 의해 변환된 문자가 필요했다. 
사실은 웹 단에서 Request Body를 만드는 과정에서 java.net.URL을 사용했는데, 이를 UTF-8로 인코딩을 설정하는 방법을 몰라서 아래와 같이 사용했다. 왜인지 모르게 url상의 한글을 그대로 쓰면 제대로 적용이 안 되는 상황이었다. 
이는 스프링 부트로 rest api를 만들어보고, 알게된다면 추가로 수정토록 하겠다.
자바스크립트

var enc = encodeURI(searchTerm);

자바

searchTerm = java.net.URLEncoder.encode(searchTerm, "UTF-8");

 

Spring Boot로 Rest API를 개발해보자.
새로운 파일 생성 -> ctrl + alt + insert
스프링 부트를 사용해서 lombok, spring web, thymeleaf의 라이브러리를 미리 추가하여 프로젝트를 생성한다.
https://start.spring.io/

혹시라도 초기에 롬복 라이브러리를 추가하지 않았다면, 생성자 주입 또는 세터 주입을 통해 서비스 파일을 컨트롤러에 DI 해줘도 되지만, 정 롬복을 사용해야겠다면, 현재 사용 중인 gradel의 버전을 확인하고, 아래의 사이트를 참조하여 자신의 버전에 맞도록 롬복 의존성을 추가하면 되겠다.
https://deeplify.dev/back-end/spring/lombok-required-args-constructor-initialize-error

생성은 위의 사이트에서 하면 되고 인텔리제이에서 프로젝트를 실행한다. 프로젝트를 실행하면 톰캣을 사용하여 rest api를 사용할 수 있도록 서버가 열리게 되는데 이를 확인하기 위해 검증 프로그램을 다운로드하도록 하자. 필자는 postman을 설치했다. 설치방법은 아래 링크를 달아두도록 하겠다.
참고로 톰캣 서버만 열리면 그냥 사이트 url에 작성해도 되기 때문에 추가 응용 프로그램이 꼭 필요한것은 아니다.
설치방법 : https://kibua20.tistory.com/149

혹시라도 Maven으로 빌드툴을 설정하여 스프링 프로젝트를 생성했는데 아래와 같은 에러가 발생한다면,

Use Maven wrapper is not correct maven home, reverting to embedded

ctrl + alt + s를 눌러 maven을 검색하고, maven home path를 Bundled (Maven 3)로 변경하면 해결된다. 

 

이제 본격적으로 Rest API를 개발해보자. 
1. controller를 생성하여 톰캣 포트를 설정하고 특정 서버를 열어놓는다. 
2. 비즈니스 로직에서 mariner에 연결하여 필요한 데이터를 가져온다.
3. 가져온 데이터를 Json으로 구성한다.
4. return 해준다.

intelliJ에서 jar파일 라이브러리 추가하는 방법 
1. file -> project Structure (단축키 : ctrl + alt + shift + s)
2. + 버튼을 클릭한 후에 java를 선택한다. 
3. jar 파일의 위치를 찾은 후에 ok 난타!


<errorMessage : Result start number is negative : -1>


쿼리에 대해서 설정을 진행할 때는 반드시 query.setResult(start, end)를 지정해주어야 한다. 그렇지 않으면 위와 같은 에러메시지가 발생

내가 만든 Rest API URL

//itemList를 추출하는 URL
http://localhost:9090/rest?searchKeyword=%EA%B0%80%EB%B0%A9&collection=SHOP&page=4

//CatGroupList를 추출하는 URL
http://localhost:9090/catGroup?searchKeyword=%EA%B0%80%EB%B0%A9&collection=SHOP

//brandGroupList를 추출하는 URL
http://localhost:9090/brandGroup?searchKeyword=%EA%B0%80%EB%B0%A9&collection=SHOP

 

spring boot에서 properties사용하기
application.properties VS application.yml
문법의 차이를 아래의 이미지를 참고하고, 사용방법은 아래의 링크를 참고하자. yml 방식을 사용하면 불필요한 Prefix의 반복을 막을 수 있기 때문에 보통 확장자의 방식을 사용한다고 한다.
https://tecoble.techcourse.co.kr/post/2020-09-29-spring-properties-binding/

 

Spring Boot에서 properties 값 주입받기

개요 Spring Boot를 이용해서 어플리케이션을 만들다 보면 외부에서 특정 값들을 주입받아야 하는 경우가 있다. 예를 들면 AWS의 특정 컴포넌트를 사용하기 위한 secret key가 될 수도 있고 외부 API를

tecoble.techcourse.co.kr