使用 Python 构建 Rest API - 最简单的方法

2025-06-07

使用 Python 构建 Rest API - 最简单的方法

在本教程中,我们将把 Django 电话簿应用程序转换为 Rest API

REST API 定义了一组功能,开发人员可以通过 HTTP 协议执行请求并接收响应,例如 GET、POST、PUT 和 DELETE

将 REST API 视为一种 Web 服务,它为您提供您想要在应用程序(移动或前端客户端)中使用的数据。

REST API 请求的关键组件是:

GET — 最常见的选项,根据给定的端点从 API 返回一些数据。POST —
创建新记录并将其添加到数据库。PUT
更新现有记录。DELETE — 删除给
端点上的记录。

入门

$ git clone https://github.com/xarala221/django-phonebook.git
$ cd django-phonebook

应用程序设置

$ pipenv install
Creating a virtualenv for this project…
Using /usr/bin/python3.7m (3.7.5) to create virtualenv…
$ pipenv shell
Spawning environment shell (/usr/bin/zsh). Use 'exit' to leave.
. /home/username/.local/share/virtualenvs/phonebook_rest_api-9zIZds3o/bin/activate

运行应用程序

(my-env) $ python manage.py runserver

请注意,我使用pipenv而不是 pip,但如果您愿意,也可以使用 pip,这取决于您。

应用程序正在http://localhost:800/运行

.
├── accounts
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── contact
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── phonebook
│   ├── asgi.py
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── Pipfile
├── Pipfile.lock
├── README.md
├── requirements.txt
└── templates
   ├── accounts
   │   ├── login.html
   │   └── register.html
   ├── base.html
   ├── contact
   │   ├── contact_details.html
   │   ├── contact_list.html
   │   ├── delete_contact.html
   │   ├── new_contact.html
   │   └── update_contact.html
   ├── index.html
   └── partials
       └── _navbar.html

这是我们的文件夹结构。

设置 Django REST 框架

Django REST 框架是一个用于构建 Web API 的强大而灵活的工具包。

(myenv) $ pipenv install djangorestframework

在 phonebook/settings.py 中添加

# Application definition
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'rest_framework', # add this
   'contact',
]

序列化联系人表(模型)

让我们创建一个新文件——contact/serializers.py

# contact/serializers.py
from rest_framework import serializers
from .models import Contact


class ContactSerializer(serializers.ModelSerializer):
   class Meta:
       model = Contact
       fields = '__all__'

准备数据

创建新文件——contact/api.py

# contact/api.py
from rest_framework import viewsets
from .serializers import ContactSerializer
from .models import Contact


class ContactViewSet(viewsets.ModelViewSet):
   serializer_class = ContactSerializer
   queryset = Contact.objects.all()

更新我们的 contact/urls.py

from django.urls import path, include # add this
from rest_framework.routers import DefaultRouter  # add this
from .views import (
   index, contact_list,
   new_contact, contact_details,
   update_contact, delete_contact
)
from .api import ContactViewSet  # add this
router = DefaultRouter()  # add this
router.register(r'contacts', ContactViewSet,
               basename='contact')  # add this


urlpatterns = [
   path("api/", include(router.urls)),
   path("", index, name="home"),
   path("contacts/", contact_list, name="contacts"),
   path("contacts/new/", new_contact, name="new"),
   path("contacts/<int:id>/details/", contact_details, name="details"),
   path("contacts/<int:id>/update/", update_contact, name="update"),
   path("contacts/<int:id>/delete/", delete_contact, name="delete"),
]

打开浏览器并转到http://localhost:8000/api/
您将看到类似以下内容:

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
   "contacts": "http://localhost:8000/api/contacts/"
}

点击链接你看到了什么?

  • 如果联系人存在于您的数据库中,您应该会看到联系人列表。
  • 您还可以创建新数据

让我们把它包起来

在本教程中,您学习了如何使用 Django 和 Django Rest Framework 创建 REST API。
在下一个教程中,我将讨论更复杂的主题,例如:

  • 身份验证和授权
  • 序列化嵌套对象
  • 序列化关系字段
  • ETC..

下期教程见

文章来源:https://dev.to/xarala221/build-a-rest-api-with-python-the-easiest-way-16f0
PREV
使用 Twitter API 让您的通勤更轻松 设置处理凭证 使用高级 30 天搜索 API 设置触发词和通知 使用 POST 状态/更新端点在 Twitter 上发布 使用 DigitalOcean 部署您的应用程序 使用 Cron 安排您的应用程序自动运行 结论
NEXT
你、我和 package.json