Node.js | http module, 상태코드

trevor1107·2021년 2월 17일
0

HTTP란?


HTTP의 요청과 응답 메세지

들어가기전에 URL를 간단하게 짚고 넘어가지

URL(Uniform Resource Locators)는 서버에 자원을 요청하기 위해 입력하는 영문으로 된 주소이다.

URL의 구조

이미지 출처 : joshua1988

요청(Request)

클라이언트가 서버에게 연락하는 것을 말한다.
*웹에서 클라이언트는 브라우저를 의미한다.

요청 메소드

URL을 이용하여 서버에 특정 데이터 요청이 가능하다. 여기서 요청하는 데이터에 특정 동작을 수행하고 싶으면 HTTP 요청 메소드를 이용하는 것이다.

  • GET : 존재하는 데이터를 받아오는 요청
  • POST : 새로운 데이터를 생성하는 요청
  • PUT : 존재하는 데이터를 수정하는 요청
  • DELETE : 존재하는 데이터를 삭제하는 요청

요청 Header(키-값 방식으로 이루어져있음)

  • Host : 요청이 전송되는 타겟의 호스트 URL 주소
  • User-Agent : 요청을 보내는 클라이언트의 정보
  • Accept : 클라이언트가 받을 수 있는 컨텐츠
  • Connection : 해당 요청이 끝난 후에 클라이언트와 서버간의 연결 유지 여부를 알려주는 헤더
  • Coolkie : 클라이언트 로컬에 저장되는 작은 데이터 파일
  • Content-Type : 보내는 메세지 Body Type
  • Content-Length : 보내는 메세지 Body Length
  • If-Modified-Since : 특정 날짜 이후에 변경 됐을 때에 대한 조건

Content-Type

  • form 형태, JSON 형태(application/json), multipart 형태(이진 파일) 등이 있다.

요청 Body(Entity)

  • 전송하는 데이터를 담고있는 곳
  • 전송하는 데이터가 없다면 바디 부분은 비어있다
const http = require("http"); // http 노드 모듈을 가져온다.

// 서버를 만든다
const server = http.createServer((req, res) => {
  // 요청이 오면 실행되는 콜백 함수
  res.statusCode = 200 // 응답 상태값 설정
  res.writeHead(statusCode, { 'Content-Type': 'text/html;charset=utf-8' });
  res.end("Hello, World!") // 응답 데이터 전송
});

// 서버를 요청 대기 상태로 만든다
server.listen(8080, () => {
  // 요청 대기가 완료되면 실행되는 콜백 함수
  // 터미널에 로그를 기록한다
  console.log('대기상태');
});

응답(Response)

서버가 요청에 대한 답변을 클라이언트에게 보내는 것을 말한다.

응답 Header

  • Content-Type
  • Content-Length
  • Set-Cookie : 쿠키 설정
  • ETag : Entity Tag

Content-Type

  • text/plain, text/html
  • application/xml, application/json
  • image/png, image/jpg
  • audio/mp3, video/mp4 등...

출처: https://sjh836.tistory.com/81 [빨간색코딩]

응답 Body

  • HTML, JSON, Octet Stream 등이 있다.
HTTP/1.1 200 OK 	// HTTP1.1버전 상태 코드 200 요청 성공
Connection: keep-alive 	// 계속 작업한다 
Content-Encoding: gzip 	// 인코딩을 gzip형태로 지정
Content-Length: 35653 	// 컨텐츠 길이는 35653바이트
Content-Type: text/html; // text나 html 형태

HTTP 상태 코드

1XX (조건부 응답, 정보)

요청을 받았으며 작업을 계속한다.

2XX (성공)

클라이언트가 요청한 동작을 수신했고 수락했으며 성공적으로 처리했다는 것을 나타낸다.

  • 200 : OK. 요청 성공
  • 201 : Created. 생성 요청 성공
  • 202 : Accepted. 요청 수락(처리는 보장되지 않는다)
  • 204 : No Centent. 성공했으나 응답 본문 데이터가 없다.
  • 205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고한다.
  • 206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환한다.

3XX (Re-Direction)

클라이언트는 요청을 마치기 위해 추가 동작을 취해야한다.

  • 300 : Multiple choices. 여러 리소스에 대한 요청 결과 목록
  • 301 : Moved Permanently. 요청한 자원의 URI이 변경되었거나 새 URI에 존재 하는 경우
  • 302 : Found. 요청한 자원의 URI가 일시적으로 변경되었음을 말한다.
  • 303 : See Other. 요청한 자원을 다른 URI에서 GET요청을 통해 얻어아 할 때 보내는 응답
  • 304 : Not Modified. 캐시 목적으로 사용되며, 응답이 수정되지 않았음을 알려준다.

4XX (요청 오류)

클라이언트에 오류가 있음을 나타낸다.

  • 400 : Bad Request. 잘못된 요청
  • 401 : Unauthorized. 권한 없이 요청하는 경우, Authorization 헤더가 잘못 된 경우
  • 403 : Forbidden. 서버에서 해당 자원에 대한 접근 금지(요청 거부)
  • 404 : Not Found. 요청받은 자원을 찾을 수 없는 경우
  • 405 : Method Not Allowed. 허용되지 않은 요청 메소드
  • 409 : Conflict. 현재 서버와 충돌 될 때 발생 (파일 업로드 시 버전 충돌 등)

5XX (서버 오류)

서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

  • 500 : Internal Server Error. 서버에 문제가 있는데 정확한 문제를 설명 할 수 없음
  • 501 : Not Implemented. 서버가 지원하지 않는 요청
  • 503 : Service Unavailable. 과부하 등으로 당장 서비스가 불가능한 상태

참고 자료 및 사이트 (감사합니다)

https://joshua1988.github.io/web-development/http-part1/
https://sjh836.tistory.com/81
https://jeonghwan-kim.github.io/series/2018/12/02/node-web-2_http.html
https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

profile
프론트엔드 개발자

0개의 댓글