RESTful API 是一种基于 HTTP 协议的 API 设计风格,它将资源作为一种统一的抽象概念来处理,并通过 HTTP 方法来对资源进行操作。在 RESTful API 中,请求和响应都是非常重要的组成部分,本文将详细介绍 RESTful API 中的请求和响应。
请求
在 RESTful API 中,请求通常包含以下几个部分:
URL
RESTful API 的 URL 通常由资源的唯一标识符和操作组成。例如,获取某个用户的信息可以使用如下的 URL:
GET /users/{id}其中 {id} 是用户的唯一标识符。
HTTP 方法
HTTP 方法用于指定对资源的操作类型。常见的 HTTP 方法包括 GET、POST、PUT、PATCH 和 DELETE。例如,上面的 URL 中使用的是 GET 方法,表示获取用户信息。
请求头
请求头用于传递一些额外的信息,例如认证信息、内容类型等。例如,下面是一个带有认证信息的请求头:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
请求体
请求体用于传递一些数据,例如表单数据、JSON 数据等。例如,下面是一个带有 JSON 数据的请求体:
{
"name": "John Doe",
"email": "johndoe@example.com"
}响应
在 RESTful API 中,响应通常包含以下几个部分:
状态码
HTTP 状态码用于表示请求的处理结果。常见的状态码包括 200、201、400、401、404 等。例如,当成功获取用户信息时,会返回 200 状态码:
HTTP/1.1 200 OK
响应头
响应头用于传递一些额外的信息,例如内容类型、缓存控制等。例如,下面是一个带有 JSON 内容类型的响应头:
Content-Type: application/json
响应体
响应体用于传递一些数据,例如 JSON 数据、HTML 数据等。例如,下面是一个返回 JSON 数据的响应体:
{
"name": "John Doe",
"email": "johndoe@example.com"
}示例代码
下面是一个使用 Node.js 和 Express 框架实现的 RESTful API 示例代码,它包含了 GET、POST、PUT 和 DELETE 方法的实现:
// www.javascriptcn.com code example
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
let users = [
{ id: 1, name: 'Alice', email: 'alice@example.com' },
{ id: 2, name: 'Bob', email: 'bob@example.com' },
{ id: 3, name: 'Charlie', email: 'charlie@example.com' }
];
// 获取所有用户
app.get('/users', (req, res) => {
res.json(users);
});
// 获取单个用户
app.get('/users/:id', (req, res) => {
const id = parseInt(req.params.id);
const user = users.find(user => user.id === id);
if (!user) {
res.status(404).json({ error: 'User not found' });
} else {
res.json(user);
}
});
// 创建用户
app.post('/users', (req, res) => {
const { name, email } = req.body;
const id = users.length + 1;
users.push({ id, name, email });
res.status(201).json({ id, name, email });
});
// 更新用户
app.put('/users/:id', (req, res) => {
const id = parseInt(req.params.id);
const { name, email } = req.body;
const user = users.find(user => user.id === id);
if (!user) {
res.status(404).json({ error: 'User not found' });
} else {
user.name = name;
user.email = email;
res.json(user);
}
});
// 删除用户
app.delete('/users/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = users.findIndex(user => user.id === id);
if (index === -1) {
res.status(404).json({ error: 'User not found' });
} else {
users.splice(index, 1);
res.status(204).send();
}
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});以上代码实现了一个简单的用户管理 API,通过 HTTP 方法和 URL 来对用户资源进行操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d28df5a941bf71344d5dab