올바른 URL을 사용하는 Postman의 두 번째 GET 요청이 항상 첫 번째 요청을 실행하고 오류 메시지와 함께 응답을 반환하는 이유는 무엇입니까?
P粉311617763
2023-08-17 11:53:17
<p>두 개의 GET 요청이 있지만 Postman에서 올바른 URL로 두 번째 GET 요청을 누르면 항상 첫 번째 요청이 실행되고 첫 번째 요청의 응답이 제공됩니다. 최적화 문제</p>
<pre class="brush:php;toolbar:false;">router.get(
"/:ID",
[인증],
usersController.getUser
);
라우터.get(
"/모든 사용자",
[인증],
usersController.getAllUser
);</pre>
<p>사용자 컨트롤러 파일 및 관련 방법</p>
<pre class="brush:php;toolbar:false;">exports.getUser = async (req, res) =>
const id = req.params.id;
노력하다 {
결과 = userService.getUserAccount(id)를 기다리십시오;
만약 (결과) {
const resultWithoutPassword = {...결과};
결과WithoutPassword.password 삭제;
return res.status(HttpCodes.OK).send(resultWithoutPassword);
}
//console.error("오류: 찾을 수 없습니다.");
return res.status(HttpCodes.NOT_FOUND).send(AppMessages.USER_NOT_FOUND);
} 잡기(오류) {
res.status(HttpCodes.INTERNAL_SERVER_ERROR).json(을 반환합니다.
{
오류: AppMessages.INTERNAL_SERVER_ERROR,
메시지: "Id는 정수여야 합니다."
});
}
}
노력하다{
결과 = userService.getAllUserAccounts()를 기다리십시오.
res.status(httpCodes.OK).json(결과)를 반환합니다.
}
잡기(오류){
반품
res.status(httpCodes.INTERNAL_SERVER_ERROR).json({ERROR:
AppMessages.INTERNAL_SERVER_ERROR});
}
}</pre>
<p><br /></p>
Express.js 라우팅을 사용할 때 Postman에서 두 가지 다른 GET 요청을 할 때 예기치 않은 동작이 발생하는 것 같습니다. 구체적으로 두 번째 경로(/allUser)에 요청을 보내면 첫 번째 경로(/:id)로부터 응답을 받습니다. 이 동작은 귀하의 기대와 일치하지 않습니다.
문제 해결을 위해 확인할 수 있는 사항은 다음과 같습니다.
라우팅 순서: 익스프레스 라우터의 라우팅 순서가 올바른지 확인하세요. 경로는 정의된 순서대로 일치됩니다. /:id 경로가 /allUser 경로보다 먼저 정의된 경우 /allUser 경로로 전송되어야 하는 요청을 포착할 수 있습니다. 원하는 경우 경로 순서를 바꿀 수 있습니다.
경로 매개변수 충돌: /:id 경로에 정의된 매개변수가 /allUser 경로의 가능한 값과 충돌하지 않는지 확인하세요. 예를 들어 /:id와 같은 와일드카드 매개변수를 사용하는 경우 실수로 "allUser" 문자열과 일치하여 잘못된 경로를 트리거할 수 있습니다. 필요한 경우 경로 매개변수를 수정하여 보다 구체적으로 만들 수 있습니다.
경로 미들웨어: 경로에 적용되어 예상치 못한 동작을 일으킬 수 있는 미들웨어가 있는지 확인하세요. 이 경우 [auth] 미들웨어가 라우팅 처리 방법에 영향을 미칠 수 있습니다. 미들웨어가 라우팅의 정상적인 동작을 방해하지 않는지 확인하십시오.
라우팅 경로 중복: 라우팅 경로가 서로 다르며 겹치지 않는지 다시 확인하세요. 예를 들어 경로 경로가 /allUser 및 /:id인 경우 Express는 들어오는 요청을 이러한 경로와 일치시키는 데 모호함이 없어야 합니다.
더 명확하게 경로 정의를 조정하는 방법은 다음과 같습니다.
으아악전체 코드와 컨텍스트를 보지 않고는 문제를 정확히 찾아내기 어렵다는 점을 명심하세요. 그러나 이러한 일반적인 문제 해결 단계는 문제를 식별하고 해결하는 데 도움이 됩니다.