Jef*_*ado 7 javascript mongoose mongodb node.js express
我正在创建一个API,我需要创建一个类似于api/v1/status的Route,以查看服务器的状态,并返回一个json,其中包含自API激活后执行的请求数,但我不知道不知道如何使用NodeJS做任何帮助?
我有那个statusRoutes.js:
SRC /路线/ statusRoutes.js
// Initialize express router
let router = require('express').Router();
// Set default API response
router.get('/status', function (req, res) {
//Here is the return number of requests
res.json({
status: 'API Its Working',
message: 'Welcome to User-Register crafted with love!',
});
});
module.exports = router
Run Code Online (Sandbox Code Playgroud)
在我的api我有一些路线:
SRC /路线/ userRoutes.js
const express = require('express')
const router = express.Router()
var userController = require('../controllers/userController')
// User routes
router.route('/users/')
.get(userController.index)
.post(userController.new);
router.route('/users/:user_id')
.get(userController.view)
.patch(userController.update)
.put(userController.update)
.delete(userController.delete)
// Export userRoute
module.exports = router
Run Code Online (Sandbox Code Playgroud)
我的index.js配置方式如下:
SRC/index.js
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const expressValidator = require('express-validator');
const app = express();
const http = require('http').Server(app);
// Import routes
const statusRoutes = require("./routes/statusRoutes");
const userRoutes = require("./routes/userRoutes");
// Configure bodyparser to handle post requests
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.use(expressValidator());
const dbName = process.env.NODE_ENV === 'dev' ? 'database-test' : 'database';
// Connect to Mongoose and set connection variable
const url = `mongodb://${process.env.MONGO_INITDB_ROOT_USERNAME}:${process.env.MONGO_INITDB_ROOT_PASSWORD}@${dbName}:27017/?authMechanism=SCRAM-SHA-1&authSource=admin`;
mongoose.set('useCreateIndex', true);
mongoose.connect(url);
var db = mongoose.connection;
// Setup server port
var port = process.env.PORT || 8080;
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", 'GET,PUT,POST,DELETE,PATCH');
res.header("Access-Control-Allow-Headers", "Content-Type");
next();
});
// Send message for default URL
app.get('/', (req, res) => res.send('User-Register is Working!!'));
// Use Api routes in the App
app.use('/api/v1', statusRoutes);
app.use('/api/v1', userRoutes);
// Launch app to listen to specified port
app.listen(port, function () {
console.log("Running User-Register on port " + port);
app.emit('APP_STARTED');
});
module.exports = app
Run Code Online (Sandbox Code Playgroud)
您可以创建在每个路由之前运行的中间件:
var count = 0;
app.use('*', (req, res, next) => { count++; next(); });
Run Code Online (Sandbox Code Playgroud)
显然,count当服务器关闭或崩溃时,它将重置,因此,您还可以考虑添加像数据库这样的永久存储.像Redis这样的数据库在存储快速变化的数据方面令人难以置信.
而且,正如Ryan在评论中指出的那样,这种方法不会扩展到多个服务.在这种情况下,使用所有服务器通用的外部存储是唯一的选择.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |