📜  使用 Express.js 创建一个以“search url”为参数的路由

📅  最后修改于: 2022-05-13 01:56:53.174000             🧑  作者: Mango

使用 Express.js 创建一个以“search url”为参数的路由

Express.js 是 node.js 中最强大的框架。 Express.js是一个路由和中间件框架,用于处理网页的不同路由,它工作在请求和响应周期之间。 Express.js 使用不同类型的中间件函数完成客户端发出的不同请求,例如客户端可以发出 get、 put、 post和 delete请求,这些请求可以很容易地这些中间件函数处理。参考 阅读本文以了解Express.js 框架的工作原理。在本文中我们将讨论什么是路由以及如何使用两种方法创建路由。

路由:网络内路由 意味着从计算机网络或服务器中可用的大量路径中过滤掉所需的路径。我们可以在 express.js 中间件的帮助下创建自己的路线,该中间件将我们的路径路由到所需的位置。

工作路由:来自客户端的所有传入请求都与项目目录中可用的所有路由匹配。匹配成功后特定路由响应。

有两种方法可以为特定 URL 创建路由。

  1. 不使用 express-generator:在这个方法中,我们简单地使用 express.js 模块来实现搜索 URL 路由。 Express.js 可以处理同一路由上的多个不同请求。
  2. 使用 express-generator: express-generator 是生成制作 Node.js 所需的所有必要文件的最快方法。 Express-generator 生成默认路由以及默认配置的 app.js 文件。

下面是这两种方法的实现:

1 没有 express-generator:使用一个简单的 express 模块来处理来自客户端的所有请求并检查传入的请求。

安装模块:

npm install express

项目结构:

index.js
//Importing require module
const express=require("express")
const server_route=require("./search")
const app=express()
  
// Creating First route
app.use("/",server_route);
  
// Listening the server
app.listen(3000,()=>{
  console.log("Server is Running on the port 3000")  
})


search.js
//Importing libraries
var express = require('express');
var router = express.Router();
  
// Handling first request
router.get('/search', function(req, res, next) {
  res.send('Respond from server');
  res.end()
});
// Handling second request of different route
router.get("/search/login",(req,res,next)=>{
    res.send("This is the login page")
    res.end()
})
// Exporting router 
module.exports = router;


app.js
//Default Imported libraries
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
  
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
  
// creating instance of the search.js route
var searchRouter=require("./routes/search")
  
var app = express();
  
// view engine setup
app.set('views', path.join(__dirname, 'views'));
  
  
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
  
app.use('/', indexRouter);
app.use('/users', usersRouter);
  
// Handling request for the searchRouter
app.use('/',searchRouter)
  
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});
  
// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
  
module.exports = app;


search.js
var express = require('express');
var router = express.Router();
  
/* GET users listing. */
router.get('/search', function(req, res, next) {
  res.send('Respond from server');
  res.end()
});
router.get("/search/page",(req,res,next)=>{
    res.send("Respond to the search page")
    res.end()
})
  
module.exports = router;


搜索.js

//Importing libraries
var express = require('express');
var router = express.Router();
  
// Handling first request
router.get('/search', function(req, res, next) {
  res.send('Respond from server');
  res.end()
});
// Handling second request of different route
router.get("/search/login",(req,res,next)=>{
    res.send("This is the login page")
    res.end()
})
// Exporting router 
module.exports = router;

使用以下命令运行index.js文件:

node index.js

输出:访问 http://localhost:3000/ 它将重定向到你 http://localhost:3000/search/login。

2 使用 express-generator: express-generator 是生成制作 Web 应用程序所需的所有必要文件的最快方法。这种方法的优点是Express-generator 生成默认路由以及默认配置的 app.js 文件。

安装快递发电机

npm install -g express-generator

基本的 express-generator 命令:

项目结构中的生成器文件:安装 express-generator 之后。我们必须在 express-generator 文件夹的 routes 文件夹中创建一个新文件 search.js。

应用程序.js

//Default Imported libraries
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
  
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
  
// creating instance of the search.js route
var searchRouter=require("./routes/search")
  
var app = express();
  
// view engine setup
app.set('views', path.join(__dirname, 'views'));
  
  
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
  
app.use('/', indexRouter);
app.use('/users', usersRouter);
  
// Handling request for the searchRouter
app.use('/',searchRouter)
  
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});
  
// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
  
module.exports = app;

使用以下命令运行app.js文件:

node app.js

搜索.js

var express = require('express');
var router = express.Router();
  
/* GET users listing. */
router.get('/search', function(req, res, next) {
  res.send('Respond from server');
  res.end()
});
router.get("/search/page",(req,res,next)=>{
    res.send("Respond to the search page")
    res.end()
})
  
module.exports = router;

控制台输出:

处理响应: