POST 전송
app.use(express.urlencoded({extended: true}))
app.post('경로', function(req, res) {
});
REST API
- Application Programming Interface
- API 디자인 방법
- 원칙 6개
- Uniform interface ( 얘만 젤 중요함)
- 하나의 URL로는 하나의 데이터를 가져와야함
- 간결하고 예측가능하게
- URL 이름짓기 관습을 잘 따르기
- 동사보다 명사 위주로 구성
- 응용해서 다른 정보도 가져올 수 있도록 일관성 있음.
- 띄어쓰기는 언더바( _ ) 대신 대시(-) 기호 사용
- 파일 확장자 쓰지 말기
- 하위 문서들을 뜻할 땐 / 기호 사용
- * 다른곳에서 URI라는 용어를 쓰기도 하는데 URI는 자료를 넘버링하고 분류하고 지칭하는 방법. URL보다는 더 큰 의미
- Client-server 역할구분
- 고객들은 URL 하나만 알면 서버에 있는 자료를 갖다쓸 수 있음.
- 서버역할 맡기거나 DB 자료 꺼내라고 하면 안됨.
- Stateless
- 요청들은 각각 독립적으로 처리되어야함. 1이 성공해야 2 보내주고 그런식으로 의존성이 생기면 안됨.
- Cacheable
- 요청을 통해 보내는 자료들은 캐싱이 가능해야함 - 이건 크롬이 잘 해줌
- Layered System
- 여러개의 레이어를 통해서 요청을 처리하게 만드는 것
- Code on Demand
- 서버는 고객에게 실제 실행가능한 코드를 전송해줄 수도 있음.
MongoDB로 DB 사용하기
- 강의에서는 mongo DB로 했지만 실제 클래스쪽은 관계형 DB로 되어 있기 때문에 참고정도로 정리함.
- 강의예제는 mongo DB atlas 에서 무료 호스팅 받아서 사용
- 예제에서 사용했던 connect 함수는 현재버전으로는 레거시함수
- 몽고DB에서 database와 collection을 만들어놓고 사용
- insert 할 때 _id 를 써주는 이유 : 몽고DB에서는 서로 구분하기 위해 _id가 필수, 안 집어넣으면 유니크 아이디 자동생성됨.
// 설치
$ npm install mongodb
const MongoClient = require('mongodb').MongoClient;
var db;
MongoClient.connect('접속URL', function(에러, client) {
if (에러) return console.log(에러);
db = client.db('todoapp') ;
db.collection('post').insertOne({ 이름 : 'John', _id : 100 }, function(에러, 결과) {
console.log('저장완료');
});
app.listen(8080, function() {
console.log('listening on 8080')
});
});
db.collection('post:컬렉션이름').insertOne();
db.collection('post').find()
db.collection('post').findOne()
db.collection('post').find().toArray()
db.collection('counter').updateOne({where에 해당}, {수정할 내용}, function(에러, 결과) {
});
EJS
- 이것도 참고용, 리액트 쓸거니까
- DB 실습을 위해 EJS라는 템플릿 엔진설치하고 사용
- views 폴더내에 ejs 확장자로 된 파일을 만들어야하고, html이랑 똑같이 쓰되 변수들 가져다 쓸 때는
<%= %>
와 같은 형태로 쓰면됨. 등호는 변수 불러 쓸 때만 사용
$ npm install ejs
app.set('view engine', 'ejs')
서버가 응답하는 방법 여러가지
app.get('/어쩌구', function(요청, 응답) {
응답.send('<p>html</p>');
응답.status(404).send('Sorry, we cannot find that!')
응답.sendFile('/uploads/logo.png')
응답.render('list.ejs', {보낼 데이터})
응답.json(제이슨데이터)
});
ENV
- 라라벨 env 파일처럼 node도 env로 관리해줄 수 있음.
- 노드개발하면서 flow는 다 그거임 라이브러리 설치 -> server.js에 방금 설치한 라이브러리 등록하기
$ npm install dotenv
require('dotenv').config();
- server.js 와 같은 경로에
.env
파일을 생성해주면 됨.
- 그 안에서 라라벨처럼 전부 대문자로 환경변수 만들어주고 값을 적으면됨.
//server.js에서 환경변수로 지정해놓은 변수를 가져다 쓸 때
process.env.{환경변수명}