node server.js 를 만들고 3000번 포트를 연결한다음 url창에 localhost:3000을 치고 엔터를 누른다면 어떻게 될까?
'요청 헤더'라는게 만들어 진다.
요청헤더는 크게 4가지 파트로 나뉜다.
1. start line
=> request method(GET or POST) 현재 URL HTTP버전
위 같은 상황에서는 ) GET http://localhost:3000 HTTP/1.1
2.headers
헤더는 화면에 꾸며지지 않는 정보들을 담고 있다.
몇가지만 살펴보자
host: 사이트의 도메인 주소(ex: 네이버, 구글)
user-agent: 사이트를 사용하고 있는 user의 정보
content-length : content의 길이
content-type: body내용의 데이터 타입을 명시한다. (ex: multipart/formdata)
: body에서 form 형식으로 데이터를 요청할때는 application/x-www-form-urlencoded
: json 형식으로 데이터를 요청할땐 application/json
3. empty line
말그대로 비어있는 한 줄
4. body
우리 눈에 보이는 body내용이다.
: 여기서 객체형식의 내용을 해석하기 위해 사용하는게 body-parser
: json 형식의 내용을 해석하기 위해 사용하는게 body-parser.json
RESTful API
여기서 RESTful ( Representational State Transfer ) 이란 아래 메서드들을 사용하여 페이지를 구현하기로 약속이다.
API ( Application Programming Interface ) 또한 객체값으로 데이터를 전하기로 한 개념이다.
http 메소드
: 클라이언트가 웹서버에게 요청하는 수단
메소드의 위치:
http 요청 메세지의 첫째줄
종류
get : 리소스 취득 (검색)
: url, uri로 (리소스) 서버에 데이터를 요청하여 받기만 함
head : 메세지 헤더 취득
: get과 비슷하지만 실제 문서를 요청하는 것이 아니라, 문서 정보(?)를 요청함
: http 응답메세지에 body 없이 헤더 정보만 보냄
post : 내용 전송 ( 파일전송도 가능)
: 클라이언트에서 서버로 정보를 전송함 (http body에 담아 웹서버로 전송함)
: 요청 데이터의 Http 헤더에 Content-Type:application/x-www-form-urlencoded 이렇게 설정함 << 해당 정보가 폼으로 전송하는 데이터라는 것을 알리는 http 헤더 형식
요청 응답: 헤더 location에 정보를 포함 시켜 응답함
put : 내용 갱신 (파일 전송 가능)
: post 처럼 정보를 서버로 전송하지만 갱신 위주이다.
: 응답 헤더에 location을 보내지 않아도 됨 (클라이언트의 Uri 를 그대로 사용함)
delete : 삭제
: 리소스(데이터) 제거
options : 메소드에 대한 질문 (메소드 종류 확인 가능)
trace : 데이터가 수신되는 경로를 보여줌
: 루프백 메세지(?)를 호출하기 위해 사용된다.
: 거의 사용안함
connect : 프락시 서버(?)오 같은 중간 서버 경유
: 웹 서버에 프락시 기능을 요청할 때 사용된다.
: 거의 사용안함
보안상의 이유로 get, post,options 만을 허용하는 경우가 일반적임
프록시 서버 (proxy server)는 클라이언틍와 서버 사이에 중계기능을 하는 서버
: 클라이언트가 프록시 서버를 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해줌
루프백 : 원래 신호를 보낸 곳으로 되돌아옴.
'Lecture' 카테고리의 다른 글
맥 oh my zsh , powerlevel10k 설치 방법 (0) | 2021.08.26 |
---|---|
os 개념 [커널, 쉘] (0) | 2021.08.26 |
WEB (1) | 2021.08.17 |
[react] next google analytics 연결 (0) | 2021.08.10 |
Styled-Component로 하위 엘리먼트 css 입히기 (0) | 2021.07.26 |