-
[Nest js 기초] 컨트롤러의 역할과 data validationWeb/Nest.js 2023. 2. 12. 12:52
Data validation의 책임
- email이 넘어오지 않은 경우(empty data): 컨트롤러
- email이 들어왔는데 형식이 틀린 경우(validation fail): 프로바이더
컨트롤러의 역할은 request를 처리하여 response하는 것인데, 여기서 처리는 service에게 위임하기 때문에 중복체크, 컨텐츠가 잘못되었는지 등의 체크는 service에서 진행한다.
하지만 애초에 필수 컨텐츠가 누락되었다면? 이것은 컨트롤러에서 체크하는 것이 맞다.
왜냐면 어차피 처리가능한 컨텐츠가 없는데, provider를 실행시킬 필요가 없으니 컨트롤러 선에서 미리 차단하는 것이다.
request가 들어왔는가(type, syntax)에 대한 것은 컨트롤러의 책임이다. 그러나 처리 과정에서 밝혀진 validate fail에 대해서는 service가 신경쓸 일이지 컨트롤러의 관심사가 아니다.
data가 empty인 경우 error 코드는 400이고
data가 있지만 처리가 불가능한 경우는 422를 리턴한다.(아래 참조)
기본적인 응답 status code
500
서버에러. 보낸 요청에는 문제가 없지만 서버에서 처리하다가 문제가 생긴 경우를 말한다.
status 코드를 세분화하지 않고 500만 날리면 프론트엔드 개발자는 어떤 문제가 생겼는지 자세히 알 수 없으므로 상황에 따라 적절한 status 코드를 날려줘야 한다.
404
404는 평소에 많이 보는 코드로 not found를 의미한다. 페이지 뿐만 아니라 유저를 찾을 수 없을 때도 사용.
400
bad request
보낸 요청이 잘못되었다는 뜻이다.
예: user를 생성하면서 email이 필수 요소인데 빼먹고 보냈을 겨우
422
bad request와 비슷하지만 다르다.
syntax나 type은 일치하지만 컨텐츠의 처리가 불가능한 상태를 말한다.
예: email을 채워서 보냈지만 처리하는 과정에서 중복된 email이라는 것을 알게되어 유저 생성이 불가능한 경우, 이메일 형식이 아닌 경우 등
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
'Web > Nest.js' 카테고리의 다른 글
Value Object와 Entity (0) 2023.03.19 DDD 마이크로 서비스의 계층 (0) 2023.03.19 first-start-mvc: model - value object (0) 2023.03.02 [Nest js 기초] MVC 간단 정리 (0) 2023.02.12