항해99 3주차 - Express.js

youngsung·2023년 2월 24일
0

Node.js

목록 보기
2/7

Express.js의 이해

  • 웹서버란 무엇인가?
    일반적인 웹서버와 Node.js로 만든 웹서버는 다르지 않습니다.
    • 그저 어떤 도구를 사용해서 만들었나의 차이일뿐입니다.
    • 기능이 다른 웹서버는 존재할 수 있지만 기반이 되는 개념 자체가 다른 웹서버는 존재하지 않습니다.
  • Express.js란?
    • Express.js는 Node.js로 서버를 빠르고 간편하게 만들 수 있게 도와주는 웹 프레임워크 입니다.
    • Express.js와 웹서버는 동일하지 않습니다.
    • Express.js는 웹서버 자체가 아닌 Node.js를 위한 웹 프레임워크로 웹서버를 구현하기 위해 사용 되는것이 Express.js 프레임워크 입니다.
  • API Client 학습
    • API Client란 뭘까?

      • API Client란 개발단계에서 우리가 작성한 API의 요청을 확인하거나 테스팅 할 떄 도움을 주는 툴입니다. API Client를 사용함으로 개발 속도를 높이거나 치명적인 에러를 예방하는데 도움을 받을 수 있습니다.

      • Postman, Insomnia등 여러 API Client가 있지만 이번에는 Thunder Client를 사용합니다.

        • Thunder Client는 VS Code 안에서 사용할 수 있으면서, 기능이 부족하지 않기 때문에 비교적 쉽게 사용 할 수 있습니다.
    • 어떤 상황에 필요할까?
      POST, PATCH, PUT, DELETE, HEAD등의 다양한 Method에 대한 API를 개발하고 테스트하기 위해서는 반드시 필요한 도구라 볼수있습니다.

Routing 이해 및 Router 학습

  • Routing이란?
    Routing은 클라이언트의 요청 조건(메서드, 주소 등)에 대응해 응답하는 방식을 말합니다.

  • Router란?
    여기서 말하는 Router는 클라이언트의 요청을 쉽게 처리 할 수 있게 도와주는 Express.js기본 기능중 하나입니다.

    • 일반적인 Router는 아래와 같은 구조를 가집니다.
      router.METHOD(PATH, HANDLER);
    • router : express의 라우터를 정의하기 위해 사용합니다.
    • METHOD : HTTP Method를 나타냅니다. (ex : get, post, put, delete ...)
    • PATH : 실제 서버에서 API를 사용하기 위한 경로를 나타냅니다.
    • HANDLER : 라우트가 일치할 떄 실행되는 함수입니다.

Module의 이해

  • Module이란?
    • Module은 분리된 자바스크립트 파일이고 각 파일은 특정한 기능을 가진 여러개의 함수와 변수들의 집합입니다.
    • Module을 만들면 다른 프로그램에서 해당 모듈을 재사용할 수 있습니다.
    • Module은 그 자체로도 하나의 프로그램이면서 다른 프로그램의 부품으로도 사용할 수 있습니다.
    • 보통 1개의 파일이 1개의 모듈이 됩니다.
  • Module은 어떻게 사용할까요?
    • export 명렬어를 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근할 수 있습니다.

    • import, require 명령어를 사용하면 외부 모듈의 기능을 가져올 수 있습니다.

      • 자바스크립트는 대표적으로 CommonJS, ES6(ES2015) 방식으로 모듈 시스템을 관리할 수 있습니다.
      • require는 현재 학습하고 있는 CommonsJs로 모듈 시스템을 관리할 때 사용합니다.
      • import는 ES6로 모듈 시스템을 관리할 때 사용합니다.

Request 와 Response

  • Request, Response란?
    • Request란 클라이언트가 서버에게 전달하려는 정보나 메세지를 담는 객체를 의미합니다.
    • Response란 서버에서 클라이언트로 응답 메시지를 전송시켜주는 객체입니다.
  • 서버 모듈
    • Node.js의 서버 모듈에는 대표적으로 http 모듈과 Express 모듈이 존재합니다.
    • Express 모듈은 http모듈을 확장하여 제공합니다.
    • Express 모듈은 기존 http모듈의 메서드도 사용할 수 있지만, Express가 추가 제공하는 메서드나 속성들을 사용할 수 있습니다.
    • 최근에는 Express의 메서드가 더욱 편리하기에 기존 http 모듈의 메서드는 잘 사용되고 있지 않습니다.
  • Express 모듈의 req, res 객체
    1)req객체
    • req.add : req 객체를 통해 app 객체에 접근할 수 있습니다.
    • req.ip : 요청한 Client의 ip주소가 담겨있습니다.
    • req.body : Request를 호출할 때 body로 전달된 정보가 담긴 객체입니다.
      • body-parser Middleware를 이용하여야 해당 객체를 사용할 수 있습니다.
    • req.params : 라우터 매개변수에 대한 정보가 담긴 객체입니다.
    • req.query : Request를 호출할 때 쿼리 스트링으로 전달된 정보가 담긴 객체 입니다.
    • req.cookies : Request를 호출할 때 Cookie 정보가 담긴 객체입니다.
      • cookie-parser Middleware를 이용하여야 해당 객체를 사용할 수 있습니다.
    • req.get(Header) : 헤더에 저장된 값을 가져오고 싶을 때 사용합니다
    2)res 객체
    • res.app : res 객체를 통해 app 객체에 접근할 수 있습니다.
    • res.status(코드) : Response에 HTTP 상태 코드를 지정합니다.
    • res.send(데이터) : 데이터를 포함하여 Response를 전달합니다.
    • res.json(JSON) : JSON 형식으로 Response를 전달합니다.
    • res.end() : 데이터 없이 Response를 전달합니다.
    • res.direct(주소) : 리다이렉트할 주소와 함께 Response를 전달합니다.
    • res.cookie(Key, Value, Option) : 쿠키를 설정할 때 사용합니다.
    • res.clearCookie(Key, Value, Option) : 쿠키를 제거할 때 사용합니다.

API와 REST API의 개념

  • API(Application Programming Interface)란?

    -API는 애플리케이션끼리 연결해주는 매개체이자 약속이라고 볼 수 있습니다.

  • API를 작성한다는 의미

    • 웹 어플리케이션(프론트엔드)에서 원하는 기능을 수행하는 URL과 인터페이스를 제공한다는 의미입니다.
    • 작성 할 API에서 원하는 데이터를 받아 데이터베이스에 데이터를 저장하고, 저장되어 있는 데이터를 읽어서 웹 어플리케이션(프론트엔드)에 데이터를 제공하는 행위를 통해 사용자가 원하는 목적을 이룰수 있게 해야 합니다.
  • REST API는 어떤 의미를 갖는 API인가?

    - REST는 "Representational State Transfer"의 줄임 말로, 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.
    
    - 최대한 간단하게 설명하자면 URL, Headers, Method 등 네트워크 표현 수단을 사람이 봐도 이해하기 쉬운 표현으로 정의한다고 이해하면됩니다.
    또한 이 "REST 아키텍쳐"는 사람이 봐도 쉽게 이해할 수 있도록 "자원"을 정의하고 이 "자원"을 중심으로 표현을 구성하는 원칙을 제시합니다.
    
    ![](https://velog.velcdn.com/images/dudtjdwn1575/post/8f6391d9-c68b-4d78-82eb-1b1e3c13965d/image.png)
    
    - REST API는 "REST 아키텍쳐"라는 규칙을 따르는 API라고 생각하면 됩니다.
    
    - REST API의 구성은 크게 세가지로 이루어 집니다.![](https://velog.velcdn.com/images/dudtjdwn1575/post/412fc391-f188-46b0-a857-3eaf7c374573/image.png)
    1) 자원(Resource) - URL
    	
        - 우리가 만들 소프트웨어가 관리하는 모든 것을 자원으로 표현할 수 있습니다. 쇼핑몰이라면 상품(Goods)에 대해서 정보를 관리할것이고 또는 장바구니(Carts)에 담긴 상품들도 관리해야겠죠.
        
    2) 행위 - HTTP method
    	
        - HTTP method 이것으로 해당 자원에 대한 행위를 표현할 수 있습니다. 예를 들어 GET 메소드는 해당 자원의 조회, POST 메소드는 해당 자원의 생성 이런 식입니다.
        - 이렇게 나누어진 것을 보통 CRUD라고 합니다. 자원에 대한 생성/조회/수정/삭제를 각각의 method로 나누어 놓은것입니다.

    Create : 생성(POST)
    Read : 조회(GET)
    Update : 수정(PUT),(PATCH)
    Delete : 삭제(DELETE)

    	- 위 이미지의 예씨처럼 쓰이는 것이 일반적인 method 사용방식입니다. 하지만 이것은 필수인 부분이 아니고 모든 곳에서 다 이렇게 지켜서 사용하지는 않습니다. 상황에 따라 저것을 완벽하게 지키는 어려운 부분들도 있으니 이 부분 참고 해주세요.
    3) 표현
    	- 해당 자원을 어떻게 표현할지에 대한 설명입니다. 보통 JSON, XML 같은 형식을 이용해서 자원을 표현합니다.
profile
To Infinity and Beyond

0개의 댓글