개념정리
HTTP
- 데이터를 주고받는 통신규약중 하나 ( 다른방법 : Web Soekcet을 이용한 실시간 통신 (채팅))
- 가장 범용적으로 쓰이는 통신규약
- 통신규약 : 컴퓨터끼리 데이터를 주고 받을때 정해둔 약속
표현수단 | 표현방법 | ||
사람 | 말 | 언어 | |
컴퓨터 | 네트워크 | 통신규약 (http , ws) |
HTTP 통신방법
- 클라이언트(브라우저)는 서버(쉽게생각하면 식당종업원 = server (필요한 음식 === 필요한 데이터))에게 원하는 페이지, 데이터를 요구 Requsest
- 서버(server)는 클라이언트가 요구한 페이지나, 데이터의 존재여부를 확인하고 있으면 해당페이지에 대한 데이터를 반환 response(응답)
- 클라이언트(브라우저는) 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려줌
Network 탭 살펴보기
- 개발자도구 Network탭에는 요청과 응답에 대한 정보들이 담겨있다.
General
- general 브라우저에서 서버로 보낸 request 요청에 관련된 데이터 어떤 url로 어떤 메소드방식으로 요청했고, 상태도 알 수 있다.
Resquest Headers
- 브라우저에서 서버로 보낸 request 요청에 관련된 데이터
Response Headers
- 서버가 데이터와 함께보낸 추가 데이터
http 구성요소
Method :
- GET: 리소스를 얻을 때 사용, 기본 요청은 모두 GET 메소드를 사용해 서버에 요청.
- POST : 서버에 데이터를 게시할때 사용하는 메소드
- PUT : 서버에 게시된 데이터를 수정 할때 사용하는 메소드
- DELETE : 서버에 게시된 데이터를 삭제할때 사용하는 메소드
Header:
- 아래와 같은 사항들에 대해 의사표현을 위한 데이터를 넣고 주고받음
- 브라우저가 어떤 페이지를 원하는지
- 요청받은 페이지를 찾았는지
- 성공적으로 찾았는지
Payload:
- 실질적인 데이터, 서버의 응답데이터
- 서버가 응답을 보낼때는 항상 payload를 보냄
- 브라우저가 요청할 때에도 payload를 보낼 수 있다.
- get메소드를 제외하곤 모두 payload를 보낼 수 있다.
- 상태코드와 Response
- 200: OK 성공
- 201: Created (작성성공)
- 400: Bad Request(잘못된요청)
- 401: Unauthorized(권한없음)
- 404: Not found(찾을수 없음)
- 4XX: 클라이언트로 인한 오류발생
- 5XX: 서버로 인한 오류발생
Router
- Routing: 클라이언트의 요청조건에 대응해 응답하는 방식
- Router: 클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 express.js 기본 기능
기본구조
router.METHOD(PATH, HANDLER);
예시
router.get('/posts/', (req, res) => {
res.json({})
})
- router : express의 라우터를 정의
- Method : get - HTTP method를 나타냄,
- PATH : '/posts/' - 실제 서버에서 API를 사용하기 위한 url경로
- HANDLER : route - (req, res) => {res.json({})}) route가 일치할때 실행되는 함수
req 메서드
req 메서드 종류
- req.params: URL의 동적 라우팅 매개변수를 가져옵니다.
- req.query: 쿼리 문자열 매개변수를 가져옵니다.
- req.body: POST 또는 PUT 요청의 본문을 가져옵니다.
- req.get(headerName): 특정 헤더 값을 가져옵니다.
- req.header(headerName): 특정 헤더 값을 가져옵니다.
- req.cookies: 쿠키를 가져옵니다.
- req.session: 세션을 가져옵니다.
- req.ip: 요청한 clinet의 ip주소가 담겨잇음
req 메서드
- req.params: 요청을 보냈을때, url에 원하는 데이터를 삽입하여 전달, url특정 경로를 매개변수로 사용 특정게시글을 선택하거나, 명확한 리소스를 지정해야할 때 사용
- req.query: 요청을 보냈을대 url에 원하는 key - value를 삽입하여 데이터 전달 url의 마지막에?를 이용해 작성가능
- req.body: 요청을 보냈을때, Body에 데이터를 삽입하엿을때, 사용 key-value의 형태, JSON형태, POST나 PUT 같은 메서드에서 사용
res 메서드
- res.send(body): HTTP 응답으로 데이터를 보냅니다.
- res.json(json): JSON 형태로 데이터를 보냅니다.
- res.render(view [, locals] [, callback]): 뷰 템플릿을 렌더링합니다.
- res.status(code): HTTP 상태 코드를 설정합니다.
- res.redirect([status,] path): 다른 URL로 리디렉션합니다.
- res.cookie(name, value [, options]): 쿠키를 설정합니다.
- res.clearCookie(name [, options]): 지정된 쿠키를 제거합니다.
- res.setHeader(name, value): 헤더 값을 설정합니다.
- res.set(name, value): 헤더 값을 설정합니다.
쿼리스트링
- url주소에 미리 협의된 데이터를 파라미터로 넘기는것
http://localhost:port/path?querystring
- http://localhost :호스트주소
- :port : 포트넘버
- /path 경로
- ?querystring: 예시
https://naver.com?key1=value1&key2=value2
- ?key1=value 같은 방식으로 이루어져 있다
- ?key1=value&key2=value2&key3=value3같은 방식으로 keyvalue 추가가능.
포트킬
- 서버를 실행할 때 실행할 포트번호가 사용중인 경우 실행할 포트넘버를 바꾸는 방법이 있고,
나는 때려죽여도 사용중인 포트를 죽이고 내가 그 포트를 사용해야겠다라고 하는 경우 포트킬을 사용하여 사용중인 프로세스를 종료하고 내가 그 포트넘버를 사용할 수 있다.
사용중인 포트확인
터미널에 netstat -a -o 명령어를 입력하면 사용중인 포트번호와 프로세스아이디 (PID)를 볼 수 있다.
사용중인 포트를 종료하기
- taskkill /f /pid pid번호를 입력하여 사용중인 포트를 종료한다. (나는 뭐가 실행중인지 몰라 무서워서 종료못함.)
ex) taskkill /f /pid 912
명령어 설명
'개발일지' 카테고리의 다른 글
개발일지 31일차 (3) | 2023.04.16 |
---|---|
개발일지 2주차 WIL (0) | 2023.04.16 |
내가보려고 만든 git명령어 (0) | 2023.04.15 |
개발일지 29일차 (0) | 2023.04.14 |
개발일지 28일차 (0) | 2023.04.14 |