[Node.js] chap.1

 

 

 

node.js & express 설치

1. Node.js 설치

2. npm init ( package.json 파일 생성 => 사용한 라이브러리 목록 기록 파일)

 - entry point : 서버로 지정할 파일(server.js) 라는 파일명 입력

3. npm install express

npm install express // 서버 생성을 도와주는 라이브러리

 

 

 

서버 실행 & GET

server.js - express를 통한 서버 설정

// 서버로 지정한 파일(server.js 파일)

const express = require('express');
const app = express();

app.listen(8080, function() {
    console.log('listening on 8080')
})

listen 함수에 인자로 포트번호, 서버 오픈시 실행할 코드 순으로 사용한다.

 

node server.js // 서버 실행

 

 

- GET 요청

app.get('/pet', function(요청, 응답) { 
  응답.send('펫용품 사시오')
})

 

 

 

서버에서 파일 전송 & Nodemon

- Nodemon

// npm
npm install -g nodemon

// yarn
yarn add global nodemon

서버 재시작 필요 없이 저장 시 서버에 반영할 수 있다.

 

 

- 서버에서 파일 전송

// (server.js)

app.get('/', function(요청, 응답) { 
  응답.sendFile(__dirname +'/index.html')
});

1) sendFile() 함수를 통해 파일을 전송할 수 있다.

2) __dirname은 현재 파일의 경로를 뜻한다.

 

 

 

 

post
......

const bodyParser = require('body-parser'); // 2021년 이후 express에 기본 포함 (안써도 됌)
app.use(bodyParser.urlencoded({extended: true})) // 이것만 필요

.........

app.post('/add', function(req, res){
    res.send('전송 완료')
    console.log(req.body.title);
    console.log(req.body.date);
})

 

- body-parser 설치

// npm
npm install body-parser

// yarn
yarn add body-parser

* 2021년 이후 설치한 프로젝트는 body-parser 라이브러리가 express에 기본 포함 (npm설치 안해도 댐)

 

app.use(express.urlencoded({extended: true}))

위 코드만 추가한다.

 

 

* form

- method: GET/POST 설정

- action: 경로 지정

- name: 데이터를 전달하는 이름 속성

app.post('/add', function(요청, 응답){
  console.log(요청.body); // { title: '...', date: '...' } => form의 input의 name (ex) title, date
  응답.send('전송완료')
});

 

 

 

Rest API

- API (Application Programming Interface)

서로 다른 프로그램간에 소통할 수 있게 도와주는 통신 규약

/, /write, /add, /modify 등으로 서버와 클라이언트 간 통신을 가능하게 했던 것

 

 

* Rest API (Representational State Transfer API)

API를 만들 때 REST 원칙을 지켜서 만든 API

 

1. Uniform Interface (인터페이스의 일관성)

 - 하나의 URL로는 하나의 데이터 (하나의 데이터에 하나의 URL)

 - 간결하고 예측가능하게

 - URL 이름짓는 관습을 따른다

 

2. Client-server 역할 구분

 - 클라이언트는 URL 하나만을 알면 자료를 갖다 쓸 수 있다. (클라이언트가 DB에 있는 직접 자료를 꺼내거나 하면 안됌)

 

3. Stateless

 - 요청들이 독립적으로 처리되어야 한다. (요청간의 의존성이 존재하면 안됌)

 

4. Cacheable

 - 요청을 통해 보내는 자료들이 캐싱 가능해야하고 가능여부를 표시하거나 기간을 설정 해주어야함

 

5. Layered System

 - 여러개의 레이어를 거쳐서 요청을 처리하게 만들어도 됌

 

6. Code on Demand

- 서버는 클라이언트에게 실제 실행가능한 코들르 전송해줄 수도 있다.

 

 

* URL 이름짓기 관습

ex)

instagram.com/explore/tags/kpop
instagram.com/explore/tags/food
facebook.com/natgeo/photos
facebook.com/bbc/photos

 

- 단어들을 동사보다는 명사 위주로 구성함

- 응용해서 다른 정보들을 쉽게 가져올 수 있을 정도로 일관성 있음 

- 대충 봐도 어떤 정보가 들어올지 예측이 가능함

 

1) 띄어쓰기는 언더바(_) 대신 대시(-) 기호 사용

2) 파일 확장자 쓰지 말기 (.html 등)

3) 하위 문서를 뜻하는 (/) 기호를 사용 (하위폴더)

 

 

 

'NodeJs' 카테고리의 다른 글

[Node.js] chap.3  (0) 2021.12.27
[Node.js] chap.2  (0) 2021.12.21

+ Recent posts