Node.js HTTP 协议和 API 开发
Node.js 提供了一系列的模块,可以用于开发 Web 应用程序和服务。其中,http
模块是 Node.js 中最常用的模块之一。本文将介绍 HTTP 协议和 http
模块的基本使用,以及如何使用 http
模块开发 API。
HTTP 协议
HTTP(HyperText Transfer Protocol)是一种应用层协议,用于在 Web 服务器和客户端之间传输数据。HTTP 协议的主要特点包括:
- 基于请求和响应模型:客户端向服务器发送请求,服务器返回响应。
- 无状态:每个请求和响应之间是独立的,服务器不会记录客户端的状态信息。
- 支持多种请求方法:常用的请求方法包括 GET、POST、PUT、DELETE 等。
- 使用 URL 来定位资源:客户端使用 URL 来指定要访问的资源。
http
模块
http
模块是 Node.js 中的一个核心模块,用于创建 Web 服务器和客户端。使用 http
模块创建服务器时,需要先创建一个服务器对象,然后调用 listen()
方法开始监听指定的端口。
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
server.listen(8080, () => {
console.log('Server running on port 8080');
});
上面的代码创建了一个 HTTP 服务器,监听 8080 端口。当客户端向服务器发送请求时,服务器会返回 Hello, World!
。
API 开发
使用 http
模块可以轻松地开发 API。API(Application Programming Interface)是一组定义了应用程序之间如何通信的接口。在 Web 应用程序中,API 通常用于访问和操作服务器上的数据。
下面是一个简单的 API 示例,用于获取和添加用户信息:
const http = require('http');
const users = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];
const server = http.createServer((req, res) => {
const { method, url } = req;
if (method === 'GET' && url === '/users') {
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(users));
} else if (method === 'POST' && url === '/users') {
let body = '';
req.on('data', (chunk) => {
body += chunk.toString();
});
req.on('end', () => {
const user = JSON.parse(body);
users.push(user);
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(user));
});
} else {
res.statusCode = 404;
res.end('Not Found');
}
});
server.listen(8080, () => {
console.log('Server running on port 8080');
});
上面的代码创建了一个 API,用于获取和添加用户信息。当客户端向服务器发送 GET 请求,并且 URL 为 /users
时,服务器会返回所有用户信息。当客户端向服务器发送 POST 请求,并且 URL 为 /users
时,服务器会将请求体中的用户信息添加到用户列表中,并返回该用户信息。如果客户端发送的请求不是 GET 或 POST 请求,或者 URL 不为 /users
,服务器会返回 404 Not Found。
总结
本文介绍了 HTTP 协议和 http
模块的基本使用,以及如何使用 http
模块开发 API。通过这些知识,可以轻松地创建 Web 应用程序和服务,并与客户端进行数据交互。