📜  在 http 中请求与在 Express.js 中请求(1)

📅  最后修改于: 2023-12-03 15:37:20.991000             🧑  作者: Mango

在http中请求与在Express.js中请求

在 web 应用程序开发中, 发送和接收 HTTP 请求是一个基本的操作。 对于 Node.js 开发人员来说, 有两种主要的方式来处理 HTTP 请求:通过纯粹的 Node.js 原生 API,或者通过使用 Express.js 框架。 在本文中,我们将比较这两种方法的差异。

在http中请求
发送 HTTP GET 请求

使用 Node.js 中的 http 模块可以发送 HTTP 请求。 下面是一个发送 HTTP GET 请求的示例:

const http = require('http');

http.get('http://example.com/', (res) => {
  let data = '';
  res.on('data', (chunk) => {
    data += chunk;
  });
  res.on('end', () => {
    console.log(data);
  });
}).on('error', (err) => {
  console.log(`Error: ${err.message}`);
});

该代码发送一个 HTTP GET 请求到 http://example.com/, 并在响应结束后将响应正文打印到控制台。

发送 HTTP POST 请求

要发送 HTTP POST 请求, 你需要使用 http.request() 方法, 并传入一些配置选项。 下面是一个发送 HTTP POST 请求的示例:

const http = require('http');

const options = {
  hostname: 'example.com',
  port: 80,
  path: '/post',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
};

const req = http.request(options, (res) => {
  let data = '';
  res.on('data', (chunk) => {
    data += chunk;
  });
  res.on('end', () => {
    console.log(data);
  });
}).on('error', (err) => {
  console.log(`Error: ${err.message}`);
});

req.write('foo=bar&baz=qux');
req.end();

该代码发送一个 HTTP POST 请求到 http://example.com/post, 并将表单数据设置为 foo=bar 和 baz=qux。

在Express.js中请求

使用 Express.js 框架可以方便地处理 HTTP 请求。 Express.js 封装了 Node.js 的 http 模块, 并提供了一些方便的功能, 例如路由、 中间件等。 下面是一个使用 Express.js 发送 HTTP GET 请求的示例:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

该代码创建了一个 HTTP GET 路由, 将请求地址设置为 /, 并返回一条简单的文字。

下面是一个使用 Express.js 发送 HTTP POST 请求的示例:

const express = require('express');
const app = express();

app.use(express.urlencoded({ extended: false }));

app.post('/post', (req, res) => {
  console.log(req.body);
  res.send('Received!');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});

该代码创建了一个 HTTP POST 路由, 将请求地址设置为 /post, 并在请求正文中解析表单数据。 在处理完表单数据后, 服务器将返回一条消息。

结论

使用纯粹的 Node.js 原生 API 和使用 Express.js 框架都可以处理 HTTP 请求。 Node.js 原生 API 提供了更大的自由度, 但需要开发人员处理更多的低级细节; 而使用 Express.js 框架可以更方便地处理 HTTP 请求, 但需要学习一些框架的概念。 在实际开发中, 我们可以根据需求来选择适合我们的方式。