[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 |