노드js: RESTAPI 섹션 1 작성 방법
이 강좌에서 nodejs를 사용하여 RESTAPI를 만드는 방법을 가르쳐 드리겠습니다.
우리는 이 모든 주제를 포함할 것이다.
RESTAPI: 그게 뭐예요? 장점이 뭐예요?
REST API는 2000년 이후 소프트웨어 공학을 완전히 바꾸었다.이러한 웹 프로젝트와 서비스를 개발하는 새로운 방법은 HTTP 규범의 아버지인 Roy Fielding이'체계 구조 양식과 네트워크를 바탕으로 하는 소프트웨어 체계 구조의 디자인'이라는 제목의 논문에서 정의한 것이다. 그는 네트워크 체계 구조와 관련된 모든 분야에서 국제 권위를 앞서는 사람이다.
오늘날, 이 소프트웨어를 기반으로 하는 전문 서비스를 만들기 위한 프로젝트나 응용 프로그램이 없습니다.트위터, 유튜브, 페이스북 인식 시스템...REST와 RESTAPI 때문에 수백 개의 회사가 업무를 일으켰다.그것들이 없으면 어떤 수준의 성장도 거의 불가능하다.이는 REST가 인터넷 서비스를 위한 API를 만드는 가장 합리적이고 효율적이며 광범위한 표준이기 때문이다.
우리 프로젝트의 생각
이 강좌에서는 영화 API를 구축합니다.
환경 설정
API 구축을 위한 기술:
cmd 열기 및 입력
mkdir movies-api //create an empty folder
cd movies-api //navigate to our project
npm init --yes //create package.json file
npm i --save express
npm i --save mongoose
npm i --save-dev nodemon
프로젝트를 위한 최상의 구조 선택
영화api:
├───컨트롤러
├───중간부품
├───모델
└───노선
이 폴더들을 만들어서 진정한 작업을 시작합시다
진정한 일
우선, 색인을 만들어야 합니다.js 파일
터미널로 이동하여 입력
touch index.js
우리 서버 만들기//index.js
const express = require('express');
const app = express();
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log('server is running')
});
터미널에서 서버 유형 실행nodemon
너는 반드시 이런 물건을 보아야 한다이제 우리의 프로젝트를 데이터베이스와 연결할 때가 되었습니다. 이 때문에 저는 mongoDB atlas 을 사용할 것입니다. 당신은 그것을 검사하고 무료 계정을 만들 수 있습니다.
//index.js
const express = require('express');
const mongoose = require('mongoose');
const app = express();
const PORT = process.env.PORT || 5000;
mongoose
.connect(
"your mongoDB atlas database url connection",
{ useUnifiedTopology: true,
useNewUrlParser: true,
useCreateIndex: true })
.then(() => {
app.listen(PORT, () =>console.log('server is running'))
})
.catch(err => {
console.log(err);
});
이런 방법을 사용하면 데이터베이스 연결에 오류가 없는 상황에서만 우리 서버가 실행할 수 있다.다음 단계는 모델 폴더user 모델에서 파일을 만들 수 있도록 사용자 모델을 구축하는 것입니다.회사 명
//user-model.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true, minlength: 6 }
});
module.exports = mongoose.model('User', userSchema);
현재, 컨트롤러 폴더에 사용자 컨트롤러를 만듭니다. "user controller.js"라는 파일은 두 개의 함수register와login을 포함합니다.하지만 우선 세 개의 가방bcryptjs, jsonwebtoken 및 express-validator이 필요합니다.
npm i --save bcryptjs
npm i --save jsonwebtoken
npm i --save express-validator
참고: 하나의 명령으로 세 개의 패키지를 설치할 수 있습니다.npm i --save becryptjs jsonwebtoken express-validator
가방 가져오래요.//user-controller
const { validationResult } = require('express-validator');
const User = require('../models/user');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
레지스터 기능//user-controller.js
const register = async (req,res) => {
const errors = validationResult(req);
if (!errors.isEmpty())
return res.status(400).json("check your data");
const { name, email, password } = req.body;
let existingUser = await User.findOne({ email: email });
if (existingUser)
return res.status(400).json("user exist");
let hashedPassword = await bcrypt.hash(password, 12);
const createdUser = new User({
name,
email,
password: hashedPassword
});
try { await createdUser.save() } catch (err) {}
let token;
token = jwt.sign(
{ userId: createdUser.id, email: createdUser.email },
'supersecretkey',
{ expiresIn: '1h' });
res.status(201).json({ token: token, userId: createdUser.id });
}
로그인 기능//user-controller.js
const login = async (req, res) => {
const { email, password } = req.body;
let existingUser;
try {
existingUser = await User.findOne({ email: email });
} catch (err) { }
if (!existingUser)
return res.status(200).json('Invalid credentials, could not log you in');
let isValidPassword = await bcrypt.compare(password, existingUser.password);
if (!isValidPassword)
return res.status(400).json('Invalid credentials, could not log you in.');
let token;
token = jwt.sign(
{ userId: existingUser.id, email: existingUser.email },
'supersecretkey',
{ expiresIn: '1h' }
);
res.status(200).json({ token: token, userId: existingUser.id });
}
우리는 이 두 함수를 내보내야 한다//user-controller.js
exports.register= register;
exports.login = login;
이 파일이 있으면 사용자 루트를 만들 수 있습니다. 따라서 루트 폴더에 새 파일'user routes.js'를 만들 수 있습니다. 이 파일은 두 개의 루트를 포함합니다. 하나는 사용자를 등록하는 데 사용되고, 다른 하나는 사용자를 로그인하는 데 사용됩니다.우선, 우리가 필요로 하는 것을 가져오자
//user-rotes.js
const { check } = require('express-validator');
const usersController = require('../controllers/user-controller');
const express = require('express');
const router = express.Router();
등록 라우팅router.post('/register',
[ check('name').not().isEmpty(),
check('email').normalizeEmail().isEmail(),
check('password').isLength({ min: 6 })],
usersController.register)
로그인 경로router.post('/login',
[ check('email').normalizeEmail().isEmail(),
check('password').isLength({ min: 6 })],
usersController.login)
노선 내보내기module.exports = router;
우리가 해야 할 마지막 일은 사용자 루트를 인덱스로 가져오는 것이다.js 및 사용postman API 테스트//index.js
const express = require('express');
const mongoose = require('mongoose');
const usersRoutes = require('./routes/user-routes');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use('/api/users', usersRoutes);
const PORT = process.env.PORT || 5000;
mongoose
.connect(
"your mongoDB atlas database url connection",
{ useUnifiedTopology: true,
useNewUrlParser: true,
useCreateIndex: true })
.then(() => {
app.listen(PORT, () =>console.log('server is running'))
})
.catch(err => {
console.log(err);
});
이제postman을 열고 로그인 및 등록 루트 테스트를 시작합니다등록
post 방법을 선택하고 "localhost: 5000/api/users/register"를 입력하고 body로 이동해서 "row"를 선택한 다음 "json"을 선택하고 마지막으로 데이터를 입력하고 보내기
로그인
데이터베이스를 열려면users 집합에서 새 사용자를 보셔야 합니다
우리는 첫 번째 부분이 이미 완성되었다고 말할 수 있다. 우리는 다음 부분에서 계속할 것이다.
정말 감사합니다.
Reference
이 문제에 관하여(노드js: RESTAPI 섹션 1 작성 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ridhamz/node-js-how-to-make-rest-api-part-1-37mb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)