개발일지

개발일지 30일차

index.ys 2023. 4. 16. 15:40

개념정리

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

명령어 설명

출처: https://seomile.tistory.com/91