해당 글은 아래의 블로그를 참고하여 작성하였습니다.
[Node.js]리액트 express 통해서 서버 요청시 한글 url 파라미터 사용하기
리액트 프론트엔드 기능 구현 도중 node.js 서버와 통신을 할 일이 있다. 그럴 때 url 뒤에 파라미터를 통해서 통신을 하게 되는데 이 때 파라미터에 한글을 넣어서 요청하면 잘 안되는 경우가 있다
falaner.tistory.com
JavaScript / 함수 / encodeURI(), encodeURIComponent(), decodeURI(), decodeURIComponent()
encodeURI(), encodeURIComponent(), decodeURI(), decodeURIComponent() encodeURI() : 인터넷 주소에서 사용하는 :, ;, /, =, ?, & 등을 제외하고 인코딩하는 함수입니다. encodeURIComponent() : 모든 문자를 인코딩하는 함수입
www.codingfactory.net
Node.js 에서 rest api를 만들 때에 request 요청을 위해 url 뒤에 GET ~~/~~/한글 과 같은 형태를 취하면 간혹 아래와 같이 깨진 모습을 볼 수 있습니다.
해결을 위해 찾아 본 결과, 백엔드에서만 수정해서 해결할 수 있는 문제는 아니고, 프론트 쪽에서 한 번 인코딩을 해주고, 인코딩 된 내용을 백엔드에서 받아 디코딩 해주는 방식을 사용하는 것 같습니다.
아래의 예시에서는 프론트쪽에서 http://localhost:3000/${encodeURIComponent('한글파라미터')}
처럼 encodeURIComponent 로 인코딩을 해주면,
백엔드 쪽에서 encodeURIComponent를 디코딩 할 수 있는 encodeURIComponent 를 이용하여 한글로 나타냅니다.
app.get(`/:temp`, (req, res) => {
const paramDecoded = decodeURIComponent(req.params.temp);
...
}
'Node.js' 카테고리의 다른 글
[Node.js] node.js 에서 base64 이미지를 S3에 저장하기 (0) | 2021.06.23 |
---|---|
[Node.js] 세션 정보 변경이 반영되지 않을 때 (2) | 2021.05.04 |
[Node.js] 하드코딩 피하기, dotenv 사용법 (0) | 2021.03.18 |