4주 2일차
HTTP method
HTTP에 담아보내는 목적
클라이언트와 서버 사이에 이루어지는 요청(request)과 응답(response) 데이터를 전송하는 방식
즉, 서버가 수행해야 할 동작을 지정하여 요청을 보내는 방법
HTTP는 프로토콜이기때문에 규약이다. 그래서 정해진 용어들이 있다.
그 용어들을 외울 필요는 없고 상황에 맞게 검색해서 사용하면 된다.
HTTP request methods - HTTP | MDN
HTTP defines a set of request methods to indicate the desired action to be performed for a given resource. Although they can also be nouns, these request methods are sometimes referred to as HTTP verbs. Each of them implements a different semantic, but som
developer.mozilla.org
- POST : 생성(=등록), 요청 데이터 처리
ex. 회원가입 (id, password, name, email, contact 등 개인정보들을 등록) → URL로 데이터를 보내지않고(정보 노출되기때문) Body에 데이터를 숨겨서 전달 -> POST가 데이터를 가져온다.
웹브라우저로 테스트할 때는 url로 받을 수 있는 get 방식만 가능하다. post는 웹 브라우저로 테스트가 안됨. => postman을 다운로드하여 테스트한다.
- GET : 리소스 조회
ex. URL로 데이터 보내 → 데이터를 받아옴(조회)
- PUT : 수정(덮어쓰기, 전체 수정), 해당 리소스가 없으면 생성
- PATCH : (수정 바뀐 값만 수정, 부분 수정)
- DELETE : 삭제
- HEAD : HTTP 메세지의 body 부분을 제외하고, 상태 줄과 헤더만 조회
- OPTIONS : 서버와 브라우저가 통신하기 위한 통신 옵션을 설명 (서버가 어떤 method, header, content-type을 제공하는지 알 수 있음)
- CONNECT : 대상 자원으로 식별되는 서버에 대한 연결 요청
- TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행
cf. PATCH : 일부 변경, 부분 수정
PATCH는 까다로운 부분이 많아서 PUT을 많이 쓴다.
ex) 마이 페이지 : 연락처, 이메일, 집주소, 이름 등은 부분 수정을 많이 한다. 이럴 때 주로 사용한다.
Node.js의 특징
- 이벤트 기반(event-driven)
이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식 ex) 요리사가 주문이 들어와야만 일을 한다.(=주문이 없으면, 일을 안한다)

- 논블로킹 I/O
논블로킹 : 이전 작업이 완료될 때까지 기다리지 않고 다음 작업을 수행하는 것

블로킹보다 논블로킹 방식이 같은 작업을 더 짧은 시간 동안 처리할 수 있다.
I/O는 입력(Input)/출력(Output)을 의미
파일 시스템 접근(파일 읽기, 쓰기, 폴더 만들기 등)이나 네트워크 요청같은 작업이 I/O의 일종
노드는 I/O작업들을 백그라운드로 넘겨 논블로킹 방식으로 동작한다.
*동기/비동기와 블로킹/논블로킹 차이 자료
👩💻 완벽히 이해하는 동기/비동기 & 블로킹/논블로킹
동기/비동기 & 블로킹/논블록킹 프로그래밍에서 웹 서버 혹은 입출력(I/O)을 다루다 보면 동기/비동기 & 블로킹/논블로킹 이러한 용어들을 접해본 경험이 한번 쯤은 있을 것이다. 대부분 사람들은
inpa.tistory.com
- 싱글 스레드
컴퓨터 작업을 처리할 수 있는 일손이 하나
프로세스: 운영체제에서 할당하는 작업의 단위.
- 노드나 인터넷 브라우저 같은 프로그램은 개별적인 프로세스
- 프로세스 간에는 메모리 등의 자원을 공유 X
스레드: 프로세스 내에서 할당받은 실행의 단위.
- 하나의 프로세스는 여러개의 스레드를 가질 수 있다.
- 스레드들은 부모 프로세스의 자원을 공유한다.(즉, 같은 메모리에 접근할 수 있다.)

사실 노드 프로세스도 내부적으로는 스레드를 여러 개 가지고 있다.
하지만 우리가 직접 제어할 수 있는 스레드는 하나뿐이라서 싱글 스레드라고 하는 것이다.
모듈?
모듈은 대개 클래스 하나 혹은 특정한 목적을 가진 복수의 함수로 구성된 라이브러리 하나로 구성된다.
모듈은 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위를 의미한다.
-> 특정한 목적,기능을 수행하는 스크립트 파일(코드 덩어리)
모듈 사용
- 기존 내장된 함수,모듈 사용 ex) setTimeout()
- npm으로 외부 모듈 사용
라이브러리 vs 프레임워크
| 라이브러리 | 프레임워크 |
| 모듈들의 집합. 코드 작성 시 활용 가능한 도구들 | 애플리케이션을 개발하는 데 사용되는 구조(뼈대) |
| 사용자가 애플리케이션 코드의 흐름을 직접 제어한다 필요한 기능이 있으면 원할 때 능동적으로 라이브러리를 호출하여 사용 |
애플리케이션 코드가 프레임워크에 의해 사용된다 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작 일련의 규칙과 구조가 정해져있고 개발자는 이러한 규칙과 구조에 따라 필요한 기능을 입력 |
| 제어 흐름 권한이 사용자에게 있음 | 제어 흐름 권한이 프레임워크에 있음 |
| jQuery, React Transition Group, Chart.js, Axios, NumPy, Pandas 등 | Angular, Vue.js, Django, Spring, Express.js 등 |
*참고 자료
React 는 왜 프레임워크가 아니라 라이브러리일까?
React에 관한 글을 작성하다가 React는 왜 라이브러리일까? 그리고 프레임워크와 라이브러리의 차이점은 무엇일까? 에 대한 해답을 얻기위해 포스팅을 작성하게 되었습니다. 1. React 는 프레임워크
canoe726.tistory.com
npm?
Node Package Manager의 약자
자바스크립트 라이브러리를 포함한 패키지들을 관리하는 도구
npm에는 Node.js에서 사용되는 각종 코드 패키지들이 모여있고, 그 패키지를 다운로드 받아 사용할 수 있다.
npm이 저장소에 "외부 모듈"을 우리가 원하는 프로젝트에 자동으로 설치해준다.
ex) "프로그램" 설치 파일 다운로드 받아서 더블 클릭
= npm install 모듈
(cf. npm은 빠르고 간편하게 삭제도 가능 = npm uninstall 모듈)
npm i 모듈명 -g : 내 컴퓨터에 있는 모든 프로젝트에 해당 모듈을 설치하는 것 (그래서 추천하지 않음)
npm 홈페이지에서 필요한 기능을 가진 패키지들을 찾아 사용하면된다.
npm | Home
Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java
www.npmjs.com
var / let / const
var는 함수 스코프를 가짐. 함수 안에 선언된 변수는 함수 밖에서 접근 불가.

let과 const는 블록 스코프를 가짐. 블록은 if, while, for, function 등의 중괄호이다.
그래서 블록 안에 선언된 변수는 블록 밖에서는 접근 불가.

let과 const의 차이
const는
- 한번 대입하면 다른 값을 대입할 수 없다.
- 또한 초기화 시 값을 대입하지 않으면 에러가 발생

'Node.js' 카테고리의 다른 글
| 12/11 express.js postman, express.js에서 사용되는 메소드들, 속성들 (0) | 2023.12.14 |
|---|---|
| 12/8 map object, express (0) | 2023.12.14 |
| 12/7 express.js - req.params 형변환, JS 비구조화, JS 네이밍, Map 객체 (0) | 2023.12.14 |
| 12/6 express.js - res.json, req.params (0) | 2023.12.14 |
| 15일차 REST API URL 규칙 (0) | 2023.12.04 |