목차
1. 상태코드란?
2. 코드별 의미
3. 상태코드를 임의로 추가하기
1. 상태코드란?
HTTP 상태 코드는 클라이언트가 서버에 요청한 작업이 완료되었는지 알려주는 지표로 웹에서 클라이언트와 서버 간의 통신을 표준화하고, 양측이 서로의 상태를 명확하게 이해할 수 있도록 하기 위해 만들어졌다.
2. 코드별 의미
1) 1XX
▶ 클라이언트가 요청한 작업을 처리중임을 알려주는 코드
① 100 Continue
클라이언트가 요청을 계속 보내도 된다는 의미
② 101 SwitchingProtocols
서버가 클라이언트가 요청한 프로토콜로 전환중임을 나타내는 의미
HTTP/1.1 -> webSocket
2) 2XX
▶ 클라이언트의 요청이 성공적으로 완료되었음을 알려주는 코드
① 200 OK
요청이 성공적으로 처리되었음을 의미
GET요청의 응답으로는 요청한 리소스를 반환하고 POST요청의 응답으로는 새로운 리소스가 생성되었음을 알린다.
② 201 reated
요청이 성공적으로 처리되었으며 새로운 리소스가 생성되었음을 알린다
③ 204 No Content
요청이 성공적으로 처리되었으나 반환할 컨텐츠가 없음을 나타낸다.
3) 3XX
▶ 클라이언트가 요청한 작업을 진행하려면 추가작업이 필요함을 알려주는 코드
① 301 Moved Permanently
요청한 리소스가 영구적으로 다른 URL로 이동했기에 다른 URL을 사용해야한다는 것을 나타낸다
② 302 Found
요청한 리소스가 임시로 다른 URL에 있으며 새 URL로 요청을 반복해야한다는 것을 나타낸다.
③ 304 Not Modified
요청이 캐시되어 새 데이터를 전송할 필요가 없다는 것을 나타낸다.
4) 4XX
▶ 클라이언트가 보낸 요청이 잘못된 요청이거나 권한이 없음을 알려주는 코드
① 400 Bad Request
잘못된 쿼리 매개변수나 잘못된 데이터 형식 등으로 인해 클라이언트의 요청이 잘못 되었거나 서버가 이해할 수 없음을 나타낸다.
② 401 Unauthorized
인증이 필요한 리소스에 대해 클라이언트가 인증되지 않았음을 나타낸다.
③ 403 Forbidden
클라이언트가 요청한 리소스에 접근할 권한이 없음을 나타낸다.
④ 404 Not Found
잘못된 URL이나 서버에 리소스가 없을 때 같이 요청한 리소스를 찾을 수 없음을 나타낸다.
5) 5XX
▶ 서버가 클라이언트의 요청 작업을 진행하는 도중 오류가 발생했음을 알려주는 코드
① 500 Internal Server Error
서버에서 예상치 못한 오류를 발생하여 처리를 할 수 없다는 것을 나타낸다.
② 502 Bad Gateway
서버가 게이트웨이 또는 프록시로 동작할 때 상위서버로 잘못된 응답을 받았다는 것을 나타내다.
③ 503 Service Unavailable
서버가 일시적으로 과부하이거나 요청을 처리할 수 없음을 나타낸다.
④ 504 Gateway Timeout
서버가 상위로부터 응답을 받을 때까지 지정된 시간 내에 응답을 받지 못했음을 나타낸다.
3. 상태코드를 임의로 추가하기
상태코드는 무조건 개발자가 상태코드를 추가해야만 하는 것이 아니라 처리중인 작업이나 응답에 따라 자동적으로 부여되기도 한다. 하지만 사용자가 필요에 따라 코드를 부여가 가능하다.
방법은 간단한데 클라이언트에 요청 작업이 완료되어 반환된 응답객체에 상태코드를 지정해주면 된다.
import { Controller, Get, Post, Body, Patch, Param, Delete,Res } from '@nestjs/common';
import {Response} from 'express';
import { TestService } from './test.service';
@Controller('test')
export class TestController {
constructor(private readonly testService: TestService) {}
@Get()
getResource(@Res()res:Response) {
return res.status([응답코드]).end();
}
}