Python RESTful API 开发

person smartzeng    watch_later 2024-08-14 20:20:17
visibility 206    class Python,RESTful API    bookmark 专栏

开发 Python RESTful API 通常使用 Flask 或 Django 框架。下面,我将介绍如何使用 Flask 和 Django 进行 RESTful API 开发。

使用 Flask 开发 RESTful API

1. 创建 Flask 项目

首先,安装 Flask 和 Flask-RESTful:

pip install flask flask-restful

创建一个基本的 Flask 应用:

from flask import Flask
from flask_restful import Api, Resource

app = Flask(__name__)
api = Api(app)

2. 定义资源(Resource)

在 Flask 中,RESTful API 的每个端点都可以被定义为一个资源。你可以创建一个继承自 Resource 的类,并实现 get, post, put, delete 等方法:

class HelloWorld(Resource):
    def get(self):
        return {'message': 'Hello, World!'}

api.add_resource(HelloWorld, '/')

3. 运行 Flask 应用

运行应用:

python app.py

访问 http://127.0.0.1:5000/,你将看到返回的 JSON 数据:

{
    "message": "Hello, World!"
}

4. 添加 CRUD 操作

我们可以扩展 API 来处理更复杂的操作。假设我们要处理用户的数据:

from flask import request

users = []

class User(Resource):
    def get(self, user_id):
        user = next((user for user in users if user['id'] == user_id), None)
        return {'user': user}, 200 if user else 404

    def post(self):
        new_user = {
            'id': request.json['id'],
            'name': request.json['name']
        }
        users.append(new_user)
        return new_user, 201

    def put(self, user_id):
        user = next((user for user in users if user['id'] == user_id), None)
        if user:
            user['name'] = request.json['name']
            return user, 200
        return {'message': 'User not found'}, 404

    def delete(self, user_id):
        global users
        users = [user for user in users if user['id'] != user_id]
        return '', 204

api.add_resource(User, '/user', '/user/<int:user_id>')
  • get(self, user_id): 获取指定用户。
  • post(self): 创建一个新用户。
  • put(self, user_id): 更新指定用户信息。
  • delete(self, user_id): 删除指定用户。

使用 Django 开发 RESTful API

Django 使用 Django REST framework 来开发 RESTful API。

1. 安装 Django 和 Django REST framework

首先,安装 Django 和 Django REST framework:

pip install django djangorestframework

2. 创建 Django 项目和应用

创建 Django 项目:

django-admin startproject myproject
cd myproject

创建应用:

python manage.py startapp myapp

settings.py 中添加 rest_framework 和你的应用 myappINSTALLED_APPS

INSTALLED_APPS = [
    ...
    'rest_framework',
    'myapp',
]

3. 创建模型

myapp/models.py 中定义一个模型,例如用户模型:

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)

然后运行迁移命令以应用模型:

python manage.py makemigrations
python manage.py migrate

4. 创建序列化器(Serializer)

在 Django REST framework 中,序列化器将模型实例转换为 JSON。创建 myapp/serializers.py 文件:

from rest_framework import serializers
from .models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

5. 创建视图集(ViewSet)

视图集定义了模型的视图逻辑。在 myapp/views.py 中创建视图集:

from rest_framework import viewsets
from .models import User
from .serializers import UserSerializer

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

6. 配置 URL 路由

myapp/urls.py 中配置路由:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import UserViewSet

router = DefaultRouter()
router.register(r'users', UserViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

然后在项目的 urls.py 中包含应用的路由:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('myapp.urls')),
]

7. 运行 Django 应用

启动开发服务器:

python manage.py runserver

现在,你可以通过 http://127.0.0.1:8000/api/users/ 访问用户 API,支持 GET, POST, PUT, DELETE 操作。

总结

通过以上步骤,你可以使用 Flask 或 Django REST framework 快速开发 RESTful API。Flask 适用于小型项目和快速原型开发,而 Django REST framework 适合更复杂的项目,提供了更多的内置功能和扩展性。

评论区
评论列表
menu