ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 0124 노드 입문 1주차 복습
    카테고리 없음 2024. 1. 24. 21:02

     

    <숙련주차 찍먹> 

     

    관계형 데이터베이스 RDB
    : 데이터의 정규화, 무결성을 보장하면서 정형화된 데이터를 효과적으로 관리할 수 있다.

    : 각 데이터를 테이블이라는 표형태의 구조에 저장하며, 테이블 간에 연관 관계를 설정하여 여러 정보를 연결하여 관리할 수 있다.

    : 복잡한 비즈니스 로직과 체계적 관리가 가능하여 보안이 중요하고 안전성이 중시하는 회사에서 사용.

     

    24일 : 입문 1주차 복습

    25일 : 입문 2주차 복습

    26일 : 숙련 1주차 진입

     

    <입문 1주차>

     

    URL : Uniform Resource Locator

    DNS : Domain Name Service

    IP : Internet Protocol

     

    브라우저 통신 방식

     

    Header : 의사 표현을 위한 데이터, 추가데이터, 브라우저가 원하는 페이지, 요청 받은 페이지를 성공적으로 찾았는지

    Payload : 실질적 데이터, get 방식을 제외하곤 모두 payload를 보낼 수 있다.

     

    * 웹 브라우저와 웹 서버 사이의 통신 과정의 이해

     

    Node.js 의 libuv 덕에 비동기적 처리가 가능

     

    블로킹 I/O : 한 번에 하나의 작업, 모두 마칠 때까지 제어권을 넘겨주지 않음. / Node.js 는 Non-blocking I/O

     

    Event Loop : 비동기 작업들을 모아서 관리하고, 실행 순서를 도와주는 도구 / Libuv 안의 Event queue에 들어감.

    특정 조건 (ex 1초 후에 실행)이 작성된 비동기 함수들을 특정 조건이 완료 되었을 때, 이벤트 큐에서 콜스택에 다시 전달해준다.

     

    REPL : Read, Evaluate, Print, Loop

     

     

    Git : 버전 관리 기능, 협업 도구

     

    git init

    git add . 

    git commit -m ""

    git remote add origin url

    git push origin main

     

     

    yarn init -y // 기본적인 값으로 yarn 을 시작하겠다.

    yarn add express mongoose  // 여러 개 같이 설치 가능 , dependencies, 프로젝트 실행과 배포 시 필요한 패키지 설치 시 사용

    yarn add -D 패키지 명 // devdependencies, 개발 또는 빌드 단계에서 필요한 패키지를 설치할 경우

     

     

    express.js (백엔드 웹프레임워크)

    * 웹 프레임워크 : 웹 서비스를 빠르게 구현할 수 있게 도와주는 도구

    : 사용자의 요청과 응답 사이에 위치하며, 특정 기능을 수행하는 미들웨어를 지원. (인증, 로깅, 에러 처리 핸들러 등)

     

    Module

    : Javascript 를 파일 단위로 분리된 코드 덩어리

    : 코드 베이스를 분리하고, 구조적으로 관리가 가능

    : 일부만 외부에서 사용하도록 노출시킬 수 있음.

    : export 로 내보내기, import 나 require 로 외부 모듈 기능 가져오기 가능

     

    import는 정적 로딩을 지원하고 코드의 최상위에 위치해야 하며,

    require는 동적 로딩을 지원하고 위치는 상관이 없다.

     

    CJS (CommonJS) 

    : Node.js 에서 기본적으로 사용되는 모듈 시스템으로 require 함수를 사용하여 다른 모듈을 불러올 수 있음.

     

    ESM (ECMA Script Module)

    : 정적으로 모듈을 가져오며 비동기적 모듈 로딩과 순환 종속을 처리

     

    '정적 모듈 로딩' , '동적 모듈 로딩' , '순환 종속'

     

    API (Application Programming Interface)

    : 어플리케이션이 서버에 어떤 방식, 어떤 주소로 요청해야 하는지 / 어떠한 결과값을 리턴할건지 에 대한 내용을 담은 것

     

    REST (Representational State Transfer)

    : www 같은 분산 하이퍼미디어 시스템을 위해 네트워크 상에서 자원을 쉽고 명확하게 식별하고 조작할 수 있게 도와주는 소프트웨어 아키텍처 / URL, Headers, Method 등 네트워크 표현 수단을 이해하기 쉬운 표현으로 정의

     

    REST API 의 구성

    1) 자원(Resource) -  URL

    2) 행위 - HTTP method / CRUD (creat/post - read/get - update/put - delete/delete) 

    3) 표현 : JSON, XML 등의 형식

     

    Routing

    : 클라이언트의 요청 조건(HTTP method, 주소 등) 에 대응해서 응답하는 방식

    : 일반적으로 router.METHOD(PATH, HANDLER); 의 구조를 가진다. 

    : method = get, post, put, patch, delete ...  / path = 실제 서버에서 API를 사용하기 위한 경로 users, posts... / 

    handler = 라우트가 일치할 때 실행되는 함수

     

    router.get('/', (req,res) => {

      res.send('Hello world!');

    });

     

    API Client

    : 개발 단계에서 작성한 API 의 요청을 확인하거나 테스팅 할 때 도움을 주는 툴

    : 치명적 에러를 예방하는데 도움

     

    Request

    : 클라이언트가 서버에 전달하려는 정보나 메시지를 담는 객체 / URL, http method, header, query parameter, body data 등

     

    Response

    : 서버에서 클라이언트로 응답 메시지를 전송시키는 객체

     

    Express.js 통신 흐름

    1) 클라이언트가 특정 URL, 데이터를 담은 요청을 서버에 전송

    2) 서버는 받은 데이터에 따라 비즈니스 로직을 수행

    3) 처리된 결과를 클라이언트에 응답

     

    :newsId = 패스파라미터 -> 경로변수를 받는다.

     

    Express.js 의 req, res 객체

    req.body : request 호출 시에 body 로 전달된 정보가 담긴 객체로 express.json() 미들웨어 사용이 필요

    req.params : 라우터 매개변수 (Path Params) 에 대한 정보가 담긴 객체

    req.query : request 호출 시에 쿼리 스트링으로 전달된 정보가 담긴 객체

     

    res.status (코드) : response 에 HTTP 상태 코드를 지정 ex) 400 200

    res.send (데이터) : 데이터를 포함하여 response 를 전달 ex) res.send('hello world!');

    res.json (JSON) : JSON 형식으로 response 전달 ex) res.json({message : 'hello, world'});

Designed by Tistory. KYW