RESTful API 是一种基于 REST(Representational State Transfer) 架构风格设计的 应用程序接口,用于在不同系统之间进行交互和通信。它充分利用 HTTP 协议,遵循一组约定,使 API 设计更加清晰、易于维护。
REST 是一种 无状态(stateless) 的架构风格,它强调:
RESTful API 的核心概念是 资源,它可以是:
在 REST 设计中,资源由 唯一的 URL 表示。例如:
https://api.example.com/users/1 # 获取 ID 为 1 的用户
https://api.example.com/articles/42 # 获取 ID 为 42 的文章
RESTful API 通过 不同的 HTTP 方法 操作资源:
HTTP 方法 | 操作 | 说明 |
---|---|---|
GET | 获取资源 | 读取数据,不对服务器数据产生影响 |
POST | 创建资源 | 发送数据到服务器,创建新资源 |
PUT | 更新资源 | 通过 ID 更新资源 |
DELETE | 删除资源 | 通过 ID 删除资源 |
示例:
GET /users # 获取所有用户
POST /users # 创建新用户
GET /users/1 # 获取 ID 为 1 的用户
PUT /users/1 # 更新 ID 为 1 的用户
DELETE /users/1 # 删除 ID 为 1 的用户
API 端点应该遵循 RESTful 规范,确保清晰易懂。
✅ 推荐:
GET /users (获取所有用户)
GET /users/{id} (获取单个用户)
POST /users (创建新用户)
PUT /users/{id} (更新用户信息)
DELETE /users/{id} (删除用户)
❌ 避免:
GET /getUsers
POST /createUser
DELETE /removeUser
首先,需要明确 API 中的资源。例如,一个博客系统可能包含:
API 端点(Endpoint)应遵循 RESTful 规范:
GET /articles # 获取所有文章
POST /articles # 创建新文章
GET /articles/{id} # 获取指定文章
PUT /articles/{id} # 更新指定文章
DELETE /articles/{id} # 删除指定文章
后端需要处理请求,并返回适当的响应。
from flask import Flask, request, jsonify
app = Flask(__name__)
# 模拟数据库
articles = [
{"id": 1, "title": "Hello REST", "content": "RESTful API 是什么?"},
{"id": 2, "title": "Flask API", "content": "使用 Flask 构建 RESTful API。"}
]
@app.route('/articles', methods=['GET'])
def get_articles():
return jsonify(articles)
@app.route('/articles/' , methods=['GET'])
def get_article(id):
article = next((a for a in articles if a["id"] == id), None)
return jsonify(article) if article else ("Not Found", 404)
if __name__ == '__main__':
app.run(debug=True)
可以使用 Postman 或 cURL 进行 API 调试。
# 获取所有文章
curl -X GET http://localhost:5000/articles
前端应用可以使用 fetch 或 Axios 发送请求。
fetch('https://api.example.com/articles')
.then(response => response.json())
.then(data => console.log(data));
RESTful API 需要考虑 安全性,常见措施包括:
示例:使用 JWT(JSON Web Token) 进行身份验证。
import jwt
SECRET_KEY = "your_secret_key"
def generate_token(user_id):
return jwt.encode({"user_id": user_id}, SECRET_KEY, algorithm='HS256')
✅ 清晰的架构:基于 HTTP 设计,符合 Web 标准。
✅ 前后端分离:前端与后端可以独立开发,提高灵活性。
✅ 良好的可扩展性:可以轻松扩展 API 以支持更多功能。
✅ 兼容性强:RESTful API 可用于 Web、移动应用、微服务等。