поэтому с этого момента я буду создавать проект разработки API, который будет курсовым проектом, таким как создание внутреннего интерфейса веб-сайта, такого как udemy.

ПРИМЕЧАНИЕ: при выполнении npm init поставьте точку входа как server.js

точка входа: (index.js) server.js

  1. в первую очередь
npm init
npm install express dotenv
npm i -D nodemon

2. на package.json скрипты как

"scripts": {
"start": "NODE_ENV=production node server",
"dev": "nodemon server"
},

теперь, прежде чем идти дальше, поскольку мы установили dot env, теперь мы можем использовать переменную среды, чтобы получить порт и среду, которая является разработкой или производством,

create a folder named 'config' in root and in that folder create a file named 'config.env'

в config.env добавить

NODE_ENV=development
PORT = 5000

теперь снова войдите в root и создайте файл с именем «server.js» и добавьте

const express = require('express');
const dotenv = require('dotenv');
// Load env vars
dotenv.config({ path: './config/config.env' });
const app = express();
app.listen();
const PORT = process.env.PORT || 5000;
app.listen(PORT,console.log(`server running in ${process.env.NODE_ENV} mode on PORT ${PORT}`));

теперь в консоли вы увидите, если вы используете make npm start и npm run dev
в npm run dev — сервер работает в режиме разработки на ПОРТ 5000
в npm start — сервер работает в рабочем режиме на порту 5000
это потому, что если вы видите в package.json, мы установили переменные для производства и разработки в server. js мы получаем доступ к этим переменным среды через process.env

теперь съел server.js после

const app = express();

вам нужно добавить

app.get('/', (req,res) => {
res.json({name:'prakash'});
})

теперь, если вы сделаете запрос на http://localhost:5000, вы получите ответ json, вместо json вы также можете написать html и отправить строку в кавычках, и, конечно, вам нужно запустить npm run dev
не стесняйтесь экспериментировать с

res.json({name:'prakash'});
res.sendStatus(400);
res.status(200).json({success:true,data:{ id:1 }});

перейдите на server.js и добавьте новый свежий код, приведенный ниже, который показывает простой способ использования get, put, post, delete

const express = require('express');
const dotenv = require('dotenv');
// Load env vars
dotenv.config({ path: './config/config.env' });
const app = express();
app.get('/api/v1/bootcamps', (req,res) => {
    res.status(200).json({success:true,msg:'show all bootcamps'});
})
app.get('/api/v1/bootcamps/:id', (req,res) => {
    res.status(200).json({success:true,msg:`get bootcamp ${req.params.id}`});
})
app.post('/api/v1/bootcamps', (req,res) => {
    res.status(200).json({success:true,msg:'create new bootcamp'});
})
app.put('/api/v1/bootcamps/:id', (req,res) => {
    res.status(200).json({success:true,msg:`update bootcamp ${req.params.id}`});
})
app.delete('/api/v1/bootcamps/:id', (req,res) => {
    res.status(200).json({success:true,msg:`delete bootcamp ${req.params.id}`});
})
app.listen();
const PORT = process.env.PORT || 5000;
app.listen(PORT,console.log(`server running in ${process.env.NODE_ENV} mode on PORT ${PORT}`));

попробуйте поэкспериментировать с этим кодом в postman, но очевидно, что мы не будем использовать этот же код для дальнейшей разработки, так как добавление такого количества кода в один файл может стать утомительным, поэтому мы будем использовать некоторые эффективные методы.

create a folder named 'routes' in root and in that folder create a file named 'bootcamps.js'

в bootcamps.js добавить

const express = require('express');
const router = express.Router();
router.get('/', (req,res) => {
    res.status(200).json({success:true,msg:'show all bootcamps'});
})
router.get('/:id', (req,res) => {
    res.status(200).json({success:true,msg:`get bootcamp ${req.params.id}`});
})
router.post('/', (req,res) => {
    res.status(200).json({success:true,msg:'create new bootcamp'});
})
router.put('/:id', (req,res) => {
    res.status(200).json({success:true,msg:`update bootcamp ${req.params.id}`});
})
router.delete('/:id', (req,res) => {
    res.status(200).json({success:true,msg:`delete bootcamp ${req.params.id}`});
})
module.exports = router;

и в server.js замените весь код этим

const express = require('express');
const dotenv = require('dotenv');
// Load env vars
dotenv.config({ path: './config/config.env' });
// Route files
const bootcamps = require('./routes/bootcamps');
const app = express();
// Mount routers
app.use('/api/v1/bootcamps', bootcamps);
const PORT = process.env.PORT || 5000;
app.listen(PORT,console.log(`server running in ${process.env.NODE_ENV} mode on PORT ${PORT}`));

так что теперь, как вы уже догадались, мы разделили все наши маршруты в другом файле, тем самым создав представление для нашего проекта, переменная bootcamps в server.js загружает маршруты в bootcamps.js, как в module.exports = router; мы экспортировали метод маршрутизатора, небольшой пример стандартизации нашего кода, теперь давайте приступим к созданию контроллеров

create a folder named 'controllers' in root and in that folder create a file named 'bootcamps.js'

в controllers/bootcamps.js добавить

exports.getBootcamps = (req,res,next) => {
    res.status(200).json({success:true,msg:'show all bootcamps'});
}
exports.getBootcamp = (req,res,next) => {
    res.status(200).json({success:true,msg:`get bootcamp ${req.params.id}`});
}
exports.createBootcamp = (req,res,next) => {
    res.status(200).json({success:true,msg:'create new bootcamp'});
}
exports.updateBootcamp = (req,res,next) => {
    res.status(200).json({success:true,msg:`update bootcamp ${req.params.id}`});
}
exports.deleteBootcamp = (req,res,next) => {
    res.status(200).json({success:true,msg:`delete bootcamp ${req.params.id}`});
}

и замените код routes/bootcamps.js на

const express = require('express');
const {
  getBootcamps,
  getBootcamp,
  createBootcamp,
  updateBootcamp,
  deleteBootcamp,
} = require('../controllers/bootcamps');
const router = express.Router();
router.route('/').get(getBootcamps).post(createBootcamp);
router
  .route('/:id')
  .get(getBootcamp)
  .put(updateBootcamp)
  .delete(deleteBootcamp);
module.exports = router;

шаблон MVC в средах веб-разработки следует правилу, что маршруты не должны выполнять какую-либо обработку или логическое кодирование, все эти вещи должны выполняться в контроллерах, поэтому мы разделили часть кода предыдущих маршрутов, создав наши контроллеры

теперь давайте перейдем к промежуточному программному обеспечению

Промежуточное программное обеспечение — это функция, которая имеет доступ к циклу ответа на запросы и работает в течение этого цикла. Все наши промежуточные функции принимают три вещи: запрос, ответ и следующее.

В server.js добавьте

const logger = (req,res,next) => {
    req.hello = 'hello world';
    console.log('middleware run');
    next();
}
app.use(logger);

и в controllers/bootcamps.js замените предыдущий getbootcamps на

exports.getBootcamps = (req,res,next) => {
    res.status(200).json({success:true,msg:'show all bootcamps', hello: req.hello });
}

так что это просто пример того, как работает промежуточное ПО

create a folder named 'middleware' in root and in that folder create a file named 'logger.js'

в logger.js добавить

const logger = (req, res, next) => {
  console.log(
    `${req.method} ${req.protocol}://${req.get('host')}${req.originalUrl}`
  );
  next();
};
module.exports = logger;

замените все в server.js на

const express = require('express');
const dotenv = require('dotenv');
const logger = require('./middleware/logger');
// Load env vars
dotenv.config({ path: './config/config.env' });
// Route files
const bootcamps = require('./routes/bootcamps');
const app = express();
app.use(logger);
// Mount routers
app.use('/api/v1/bootcamps', bootcamps);
const PORT = process.env.PORT || 5000;
app.listen(PORT,console.log(`server running in ${process.env.NODE_ENV} mode on PORT ${PORT}`));

это один из способов использования промежуточного программного обеспечения, но сейчас мы будем использовать стороннее промежуточное программное обеспечение с именем morgan, запустите эту команду на своей консоли.

npm i morgan

а теперь просто замените код в server.js приведенным ниже кодом.

const express = require('express');
const dotenv = require('dotenv');
const morgan = require('morgan');
// Load env vars
dotenv.config({ path: './config/config.env' });
// Route files
const bootcamps = require('./routes/bootcamps');
const app = express();
// dev logging middleware
if(process.env.NODE_ENV == 'development'){
    app.use(morgan('dev'));
}
// Mount routers
app.use('/api/v1/bootcamps', bootcamps);
const PORT = process.env.PORT || 5000;
app.listen(PORT,console.log(`server running in ${process.env.NODE_ENV} mode on PORT ${PORT}`));

в консоли выдает аналогичный ответ

Так что да, это все для этого, спасибо, что придерживаетесь