最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

app.use在我的代码中指向哪里?

IT培训 admin 1浏览 0评论

app.use在我的代码中指向哪里?

我是一个初学者,我真的不明白它指向何处以及这个特定代码行的含义是什么

app.use('/ api / v1',router);

特别是/ api / v1我正在我的Windows机器上运行它。

`'use strict';

const express    = require('express');        
const app        = express();                
const bodyParser = require('body-parser');
const logger       = require('morgan');
const router       = express.Router();
const port     = process.env.PORT || 8080;

app.use(bodyParser.json());
app.use(logger('dev'));

require('./routes')(router);
app.use('/api/v1', router);

app.listen(port);

console.log(`App Runs on ${port}`);`
回答如下:

代码行:

app.use('/api/v1', router);

意味着您正在安装路由器,该路由器仅针对路径以/api/v1开头的URL进行查询,并且路由器中的任何路由将相对于该起始点。

所以,如果您的路由器看起来像这样:

const router = require('express').Router();

router.get('/', ...);
router.get('/list', ...);

module.exports = router;

这是你用app.use('/api/v1', router);添加的路由器,那么你将有一个URL的路由器:

/api/v1
/api/v1/list

这些路径都是服务器所在主机的补充。因此,从外部发起请求的完整URL将包括主机(IP地址或DNS名称),例如:

http://example/api/v1
http://192.168.1.29/api/v1/list

定义路由时不需要主机,因为主机名已在请求到达路由处理程序时处理。


请记住http的工作原理。当您在浏览器中输入http://example/api/v1/list等网址时,这就是浏览器的功能。

  1. 它解析URL并将其分解为多个部分。它找到了http的协议,example的主机/api/v1/list的路径,并没有找到指定的端口。
  2. 如果未指定端口,则它将采用指定协议的默认端口。 http的默认端口是端口80。
  3. 现在它需要主机example并在DNS中查找以获取IP地址。
  4. 然后,它与该IP地址和所需端口建立TCP连接。
  5. 建立TCP连接后,它会发送HTTP请求,如下所示。

例:

GET /api/vi/list HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Cookie: x=y
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Host: example

您将注意到该http请求中,路径是在没有域的情况下发送的,因为该域已用于获取IP地址并建立与该主机的连接。

app.use在我的代码中指向哪里?

我是一个初学者,我真的不明白它指向何处以及这个特定代码行的含义是什么

app.use('/ api / v1',router);

特别是/ api / v1我正在我的Windows机器上运行它。

`'use strict';

const express    = require('express');        
const app        = express();                
const bodyParser = require('body-parser');
const logger       = require('morgan');
const router       = express.Router();
const port     = process.env.PORT || 8080;

app.use(bodyParser.json());
app.use(logger('dev'));

require('./routes')(router);
app.use('/api/v1', router);

app.listen(port);

console.log(`App Runs on ${port}`);`
回答如下:

代码行:

app.use('/api/v1', router);

意味着您正在安装路由器,该路由器仅针对路径以/api/v1开头的URL进行查询,并且路由器中的任何路由将相对于该起始点。

所以,如果您的路由器看起来像这样:

const router = require('express').Router();

router.get('/', ...);
router.get('/list', ...);

module.exports = router;

这是你用app.use('/api/v1', router);添加的路由器,那么你将有一个URL的路由器:

/api/v1
/api/v1/list

这些路径都是服务器所在主机的补充。因此,从外部发起请求的完整URL将包括主机(IP地址或DNS名称),例如:

http://example/api/v1
http://192.168.1.29/api/v1/list

定义路由时不需要主机,因为主机名已在请求到达路由处理程序时处理。


请记住http的工作原理。当您在浏览器中输入http://example/api/v1/list等网址时,这就是浏览器的功能。

  1. 它解析URL并将其分解为多个部分。它找到了http的协议,example的主机/api/v1/list的路径,并没有找到指定的端口。
  2. 如果未指定端口,则它将采用指定协议的默认端口。 http的默认端口是端口80。
  3. 现在它需要主机example并在DNS中查找以获取IP地址。
  4. 然后,它与该IP地址和所需端口建立TCP连接。
  5. 建立TCP连接后,它会发送HTTP请求,如下所示。

例:

GET /api/vi/list HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Cookie: x=y
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Host: example

您将注意到该http请求中,路径是在没有域的情况下发送的,因为该域已用于获取IP地址并建立与该主机的连接。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论