[英]NodeJS Express Rest API tutorial
大家好,我是 NodeJS 環境的新手。 我想使用 NodeJS、MongoDB 和 Express JS 開發基於 API 的應用程序。 我需要一個完整的 api 開發教程,在那里我學習路由、中間件、mongoose 一對多和多對多功能和 nodeJS 登錄系統。 基本上我需要一個關於 NodeJS rest api 開發的完整教程包
我會建議您檢查出由reddit的API克隆開發咖啡,並從教程的NodeJS LearnCode.academy 。
這是一個示例服務。以合適的方式創建文件結構。 下面給出的代碼是完整服務的代碼。 另請參閱快速文檔以獲取更多知識
服務器.js
const express=require('express');
const bodyparser=require('body-parser');
const cors=require('cors');
const routing=require('./routes');
const app=express();
app.use(cors());
app.use(bodyparser.json());
app.use('/',routing);
app.listen(8095,'localhost',err=>{
if(err){
console.log(err);
process.exit(-1);
}
console.log('connected to localhost at post 8095');
});
路由.js
const express=require('express');
const routes=express.Router();
const bookroute=require('./Books/controllers/book.controller');
const authorroute=require('./Books/controllers/author.controller');
routes.use('/books',bookroute);
routes.use('/authors',authorroute);
module.exports=routes;
控制器->作者.控制器
const express=require('express');
const router=express.Router();
const authorModel=require('../models/author.model');
router.get('/',authorModel.getAuthors);
module.exports=router;
控制器->book.controller
const express=require('express');
const router=express.Router();
const bookModel=require('../models/book.model');
router.get('/',bookModel.getBooks);
router.get('/authors',bookModel.getAutBooks);
router.get('/:name',bookModel.getBook);
router.post('/',bookModel.addBooks);
router.delete('/:name',bookModel.deleteBooks);
module.exports=router;
模型->作者.模型
var schema=require('../dbSchema');
var authormodel=schema.model('author');
exports.getAuthors = function (req,res) {
authormodel.find().exec().then((data)=>{
res.send(data)
})
};
模型->book.model
var schema=require('../dbSchema');
var bookmodel=schema.model('book');
exports.getBooks = function (req,res) {
bookmodel.find().exec().then((data)=>{
res.send(data)
}).catch((err)=>{
console.log(err);
});
};
exports.getBook = function (req,res) {
var bkName=req.params.Author;
bookmodel.find({Name:bkName}).exec().then((data)=>{
res.send(data)
}).catch((err)=>{
console.log(err);
} );
};
exports.getAutBooks = function (req,res) {
bookmodel.find({},'Author').then((data)=>{
res.send(data);
}).catch((err)=>{
console.log(err);
});
};
exports.deleteBooks=function(req,res){
var bkName=req.params.name;
bookmodel.remove({Name:bkName}).exec().then((data)=>{
res.status(200);
console.log(bkName);
}).catch((err)=>{
console.log(err);
});
};
exports.addBooks=function(req,res){
var newBook=new bookmodel({
Name:req.body.Name,
ISBN:req.body.ISBN,
Author:req.body.Author,
Price:req.body.Price,
Year:req.body.Year,
Publisher:req.body.Publisher
});
newBook.save().then(()=>{
res.status(201);
}).catch((err)=>{
console.log(err);
});
};
數據庫架構
const mongoose=require('mongoose');
const schema=mongoose.Schema;
const bookSchema=new schema({
Name:{type:String,required:true},
ISBN:{type:String,required:true},
Author:{type:String,required:true},
Price:{type:String,required:true},
Year:{type:String,required:true},
Publisher:{type:String,required:true}
});
const authorSchema=new schema({
fname:{type:String,required:true},
lname:{type:String,required:true},
nationality:{type:String,required:true}
});
mongoose.model('book',bookSchema,'booklist');
mongoose.model('author',authorSchema,'authorlist');
mongoose.connect('mongodb://localhost:27017/dbFinal',(err)=>{
if(err){
console.log(err);
process.exit(-1);
}
});
module.exports=mongoose;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.