일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩봉사
- 1과목
- kotlin
- 백준알고리즘
- SW봉사
- 소프티어
- 프로그래머스
- 코딩교육봉사
- SQL
- java
- 자바
- 시나공
- BFS
- 데이터베이스
- 스프링
- 코틀린
- MYSQL
- 정보처리산업기사
- C++
- programmers
- 문제풀이
- 공부일지
- 백준 알고리즘
- python
- CJ UNIT
- 파이썬
- 회고
- 백준
- 알고리즘
- softeer
- Today
- Total
JIE0025
[로그보기] url param 인코딩과 디코딩 관련 본문
✅ 의문
FE가 API 요청 응답 기능테스트를 진행하며 발생하는 로그를 확인했는데,
GET '/api/v1/amenities?state=%EA%B2%BD%EA%B8%B0
이렇게 로그가 찍힌걸 확인되었다.
POSTMAN으로 테스트했을 때에도 나는한글로
GET '/api/v1/amenities?state=경기
이렇게 보냈었기 떄문에 로그에서도 한글로 나올 줄 알았는데,
전혀 다른 문자열이 들어오고 있어서
잘 들어오고 있는게 맞는지 체크가 필요했다.
알아보니 해당 문자열은 한글이 인코딩된 값이었다.
✅ 인코딩 ?
URL 인코딩, URL 디코딩은 컴퓨터에 여러 언어를 사용하다보니 생긴 문제를 해결하기 위해서 나온 것
인코딩된 값을 통해 컴퓨터가 더 명확히, 편하게 읽는다고 한다.
param으로 한글을 보내고 있는데 만약 그게 인코딩 된 값이라고 했을때
스프링부트에선 DTO로 디코딩을 자연스럽게 해주는게 궁금해졌다.
✅ 궁금증 해결
Spring Boot는 HTTP 요청을 처리할 때, 기본적으로 UTF-8 인코딩을 사용한다.
만약에 클라이언트에서 요청한 값이 UTF-8로 인코딩되어 있다면,
Spring Boot는 자동으로 해당 값을 디코딩하여 DTO의 필드에 바인딩해준다고 한다.
내 요청 메소드와 파람의 경우,
GET '/api/v1/amenities?state=%EA%B2%BD%EA%B8%B0를 받았을 때
@RequestParam 어노테이션으로 선언한 state 파라미터를 문자열 타입인 String으로 받으면서
Spring Boot는 해당 값을 UTF-8 디코딩하여 "경기"라는 문자열을 자동으로 DTO에 설정해준다.
'백엔드 > 이슈, 트러블슈팅' 카테고리의 다른 글
DTO에서 추상클래스를 사용하는것에 대하여 (4) | 2023.04.19 |
---|---|
[SMTP] 이메일 구현과 관련 이슈 기록 (3) | 2023.04.07 |
[에러] The dependencies of some of the beans in the application context form a cycle 해결 (0) | 2023.02.26 |
[의문] refresh token도 결국 JWT인데 왜 "Bearer"을 안쓰는걸까? (0) | 2023.02.26 |
통합테스트에서 데이터베이스 이슈 : 각각은 잘 동작하지만 전체 동작시 실패 (0) | 2023.01.07 |