TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters
일단 상황은 해시태그를 url 에 담아서 서버로 get 요청을 하는 것이다.
해시태그는 당연히 한글이 될 수 있다.
프론트 서버에서는 다음과 같은 에러를 뱉어냈다.
에러발생의 원인인 axios 로 서버에 API 요청을 하는 부분을 보자
axios.get(`/hashtag/${data}?lastId=${lastId || 0}`);
data 변수에 hashtag 가 들어간다.
lastId 는 페이지네이션을 위한 것이므로 여기서는 무시한다.
data 에 한글이 들어갈경우 백엔드로 요청하는 API는 '/hashtag/크리스마스' 가 되는 것이다.
여기서 바로 에러가 발생한 것이다.
그럼 해결책은?
바로 enCodeURIComponent & deCodeURIComponent 를 사용하여 한글을 처리해주면 된다.
먼저, 브라우저 콘솔창에서 enCodeURIComponent & deCodeURIComponent 를 실행해보자
다음과 같이 인코딩/디코딩 되는 것을 확인할 수 있다.
이를 활용하여 한글 해시태그를 처리해주자.
1. 프론트 측 : enCodeURIComponent 를 사용하여 한글을 인코딩
axios.get(`/hashtag/${encodeURIComponent(data)}?lastId=${lastId || 0}`);
2. 백엔드 측 : 받은 변수를 deCodeURIComponent 를 사용하여 디코딩
include: [{
model : Hashtag,
where : { name : decodeURIComponent(req.params.hashtag)} //해시태그 조건
}
'programming' 카테고리의 다른 글
github actions & pages로 Vue.js 프로젝트 build 하고 호스팅하기 (CI/CD 맛보기) (0) | 2022.03.07 |
---|---|
[JAVA] (1) 환경 설정 - 다운로드 (0) | 2022.02.03 |
react-hook-form 과 meterial-UI 함께 쓰기 (3) - DateRangePicker (0) | 2022.01.30 |
react-hook-form 과 meterial-UI 함께 쓰기 (2) - ToggleButton (0) | 2022.01.30 |
react-hook-form 과 meterial-UI 함께 쓰기 (1) - TextField (0) | 2022.01.30 |