swsnu / swppfall2020

28 stars 17 forks source link

[HW4] 403,404의 우선순위와 관련하여 궁금증이 있습니다. #184

Open chullino opened 4 years ago

chullino commented 4 years ago

안녕하세요, 최린범입니다.

문제 스펙에 따르면 403이 404보다 우선하는 것으로 나오는데요. 403, 404 우선순위와 관련하여 궁금증이 있어 질문드리게 되었습니다.

상황은 다음과 같습니다.

예를 들어, /api/article/1024이 Database에 존재하지 않는 상황에서, 어떤 유저가 /api/article/1024에 접근한다고 해보겠습니다.

이 상황에서는 403, 404가 모두 가능합니다. 존재하지 않기에 404(Not Found)이며, (존재하지 않으니 당연히) 접근할 수 없기에 403(Forbidden)이기 때문입니다.

그리고, 문제 스펙의 에러 코드 우선순위에 따르면, 403(Forbidden)은 나와도 404(Not Found)는 결코 나오지 않습니다.

궁금증은 다음과 같습니다.

DB에 없는 자료이니, 404(Not Found)를 내어주어야 할 것 같기도 한데, 403(Forbidden)을 내어주는 것으로 과제 스펙이 설정된 배경이 궁금했습니다.

유저에게는 데이터의 존재여부를 숨기고(즉, Not Found인지 Found인지 안알려주고), Forbidden되었다고만 알리는 것이 보통 일반적인 에러 핸들링 방식인가요?

ddongminstar commented 4 years ago

우선 순위에 따라 404가 먼저 나오지 않나요?

chullino commented 4 years ago

Among these global specifications, the prior specification has the higher priority. For example, if someone requests for a non-existing article without signing in, response with 401 instead of 404.

이거랑, 에러 코드 스펙이 작은 숫자부터 나오길래, 숫자가 작을수록 우선순위가 높다... 이렇게 이해했습니다.

jungin-jin-choi commented 4 years ago

Please make sure to implement your request methods under the following global specifications:

jungin-jin-choi commented 4 years ago

실수로 엔터눌러버렸네요.. 저는 405 > 401 > 404 > 403 으로 이해했습니다

chullino commented 4 years ago

아, global specification에 대해서 제가 잘못 읽은 듯 싶네요! 감사합니다!

kooyunmo commented 4 years ago

@luvimperfection 님께서 말씀해주신 것과 같이 405 > 401 > 404 > 403 순서입니다. (앞에 있을 수록 higher priority)

hwarim-hyun commented 4 years ago

여기에 400의 우선순위를 추가하면 405 > 401 > 404 > 403 > 400 이 맞나요?

kooyunmo commented 4 years ago

@polarcoke2 400을 고려한다면 그렇게 하시면 됩니다.

hwarim-hyun commented 4 years ago

감사합니다!