기타등등/한번해봄

👾한번 해봄 시리즈👾 REST API 혹은 mongoDB 활용전 기본과정

킹king 2021. 5. 29. 15:46
반응형

 

👾한번 해봄 시리즈👾

=할건 따로있는데 한번 손대고싶어서 일단 찍어먹어보는 시리즈

 

 

------------------------------

 

 

1. npm init 입력

엔터 몇번 막 치면 package.json이 생성된다.

 

 

2. npm i express mongoose 입력

package.json에 이렇게 깔리면 성공

express는 노드js 쉽게 쓸 수 있는 라이브러리임.

 

 

3. npm i --save-dev dotenv nodemon 입력

그리고 package.json에 이렇게 변경해줌

노드몬은 코드 수정할때마다 매번 서버 껐다켜기 귀찮으니까

코드 저장만 하면 알아서 서버 재시작 해줄 수 있는 서비스임.

 

 

4. server.js, .env, .gitignore 이렇게 3가지 파일 생성

이렇게 그냥 파일 생성해주면 된다.

특히 .gitignore에는 안에 이렇게 써주면 된다.

깃에 올릴때 저 파일들은 빼고 올려라 이런뜻

 

 

5. server.js에 기본 설정 입력

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

app.listen(3000, () => console.log('서버 시작'));

그리고 터미널에

npm run devStart 라고 쳐주면

이렇게 정상적으로 실행된다.

 

 

------------------------------------------------------

 

 

6. server.js에 GET요청하기

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

app.listen(3000, () => console.log('서버 시작'));

app.get('/pet', (req, res) => res.send('here is pet'));
app.get('/book', (req, res) => res.send('here is book'));

이렇게 쓰면 pet으로 들어갈때마다 해당 메세지가,

book으로 들어갈때마다 해당 메세지가 뜨게 된다.

 

 

7. server.js에 html파일 전달하기

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

app.listen(3000, () => console.log('서버 시작'));

app.get('/', (req, res) => res.sendFile(__dirname + '/index.html'));

이렇게 쓰고 따로 index.html 파일을 생성하여 글을 써주면,

localhost에 접속하자마자 바로 index.html파일을 보여줌.

 

 

6. server.js에 몽구스 연결

const express = require('express');
const app = express();
const mongoose = require('mongoose');
const DB_URL = 'mongodb+srv://pdb:<password>@cluster0.pfbxz.mongodb.net/myFirstDatabase?retryWrites=true&w=majority';

mongoose.connect(DB_URL, { useNewUrlParser: true, useUnifiedTopology: true }, (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log('db에 연결되었습니다.');
    }
});

app.listen(3000, () => console.log('서버 시작'));

일단 DB주소 알아내는 방법은, mongoDB 사이트에 가서 회원가입을 하고

mongoDB 사이트에서 회원가입 후 Clusters를 하나 생성한 뒤 저렇게 누름
그럼 이렇게 붙여넣을 수 있는 주소가 뜨는데 복사하면 된다.

저기서 나오는 <password>를 지우고 DB비번을 써주면 되는데, 그 비번은

Database Access에서 확인 가능

난 예전에 미리 생성해놓은 DB가 있어서 그런가 아무튼 기억이 안나는데,

없으면 새로 하나 생성하고 만든 비밀번호를 <password>대신에 써주면 된다.

※ <> 이 괄호까지 다 지워버리고 비밀번호만 써주면 된다.

 

Authentication failed.

이 에러는 비번이 틀려서 나는 에러임.

 

Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted.

이 에러는 ip주소를 추가해주면 해결되는 에러임.

mongoDB > Network Access > ADD IP ADDRESS에서 위와 같이 설정

 

 

7. DB주소 숨기기

근데 저렇게 대놓고 비밀번호가 써진 DB를 쓰면 정보 노출 우려가 있기 때문에

초반에 생성해둔 .env에 써주고 불러오는 형식으로 가면 된다.

DB_URL = mongodb+srv://pdb:<password>@cluster0.pfbxz.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

.env파일에 이렇게 써두고

 

require('dotenv').config();

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

mongoose.connect(process.env.DB_URL, { useNewUrlParser: true, useUnifiedTopology: true }, (err) => {
    if(err) {
        console.log(err);
    } else {
        console.log('db에 연결되었습니다.');
    }
});

app.listen(3000, () => console.log('서버 시작'));

server.js에서 이렇게 수정해주면 된다.

 

 

여기까지만 하고 mongoDB를 배우러 간다!

 

 

--------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

8. server.js에 router추가

app.use(express.json());

const page = require('./routers/page');
app.use('/page', page);

그리고 routers라는 폴더를 만들고 그 안에 page라는 js파일을 생성한다.

 

 

9. page.js에 내용 입력

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
    res.send('hello page');
});

module.exports = router;

여기서 vscode라면 REST Client라는 확장프로그램 설치한뒤

다시 로드를 누르고

routers폴더 안에 route.rest라는 파일 생성 후

그 파일에다가 아래와같이 써주고

상단에 Send Request를 누르면 오른쪽 창에서 결과를 볼 수 있다.