한글이 들어가면 http://localhost:3060/hashtag/%EC%9D%B4%EC%88%98%EB%98%A5 처럼 URIComponent 로 변형 된다.
해결
서버 라우터에서 해당 주소를 처리할 때는 decodeURIComponent() 함수를 통해 변환이 필요하다
const express = require("express");
const db = require("../models");
const router = express.Router();
router.get("/:tag", async (req, res, next) => {
// 한글이나 특수문자 등이 url 에 포함되는 경우
const tag = decodeURIComponent(req.params.name);
try {
const posts = await db.Post.findAll({
// 보통 where 가 이 부분에 들어가는데 여기서는
// post의 조건이 아니라 hash 태그의 조건을 찾기 때문에
include: [
{
model: db.Hashtag,
// 이 부분에 적어준다
where: { name: tag }
}
]
});
res.json(posts);
} catch (e) {
console.error(e);
next(e);
}
});
module.exports = router;
이슈
hashtag/${name}
의 url 로 링크가 이동한다.http://localhost:3060/hashtag/%EC%9D%B4%EC%88%98%EB%98%A5
처럼 URIComponent 로 변형 된다.해결
decodeURIComponent()
함수를 통해 변환이 필요하다