网站建设人员工作计划,怎样创建微网站,排名优化哪家好,关于公司网站建设关键词: Python, Web 开发, Django, RESTful API 1 API的一些事儿
1.1 什么是API#xff1f;
API是应用程序编程接口#xff08;Application Programming Interface#xff09;的缩写。它是一种定义了不同软件组件之间交互方式的规范。API允许不同的应用程序之间进行通信和… 关键词: Python, Web 开发, Django, RESTful API 1 API的一些事儿
1.1 什么是API
API是应用程序编程接口Application Programming Interface的缩写。它是一种定义了不同软件组件之间交互方式的规范。API允许不同的应用程序之间进行通信和数据交换使得开发者能够利用其他应用程序提供的功能和数据而无需了解其内部实现细节。
在Web开发中API通常是用于构建和访问Web服务的一种方式。通过API开发者可以通过HTTP请求发送和接收数据从而实现不同应用程序之间的数据传输和交互。
1.2 Web开发的API类型
在Web开发中有几种常见的API类型
1.2.1. Web服务APIWeb Service APIs
这种API使用标准的Web技术如HTTP和XML来进行通信。其中两种常见的Web服务API类型是SOAP和REST。 SOAPSimple Object Access Protocol 它使用XML格式进行数据交换并通过HTTP或其他协议传输。SOAP提供了一种基于XML的通信机制通过定义消息结构和服务操作来描述API。SOAP API通常使用WSDLWeb Services Description Language来定义API的结构和操作。 RESTRepresentational State Transfer 它是一种基于Web的轻量级架构风格。REST API使用HTTP协议的不同方法如GET、POST、PUT、DELETE来执行对数据的操作。它通常使用JSON或XML格式进行数据交换。REST API是目前最常用的Web服务API类型。
1.2.2. 第三方APIThird-Party APIs
这些API由第三方提供允许开发者访问其服务或数据。例如社交媒体平台如Twitter和Facebook提供API使开发者能够使用其平台上的功能和数据。第三方API通常使用REST风格并要求开发者进行身份验证以获得访问权限。
1.2.3. 自定义API
在Web开发中你也可以构建自己的自定义API来为你的应用程序提供服务。这些API可以根据应用程序的需求进行设计和实现并使用标准的Web技术进行通信。
2 RESTful API 简介
在进一步了解 Django 如何设计 RESTful API 之前我们先来了解一下 RESTful API 的基本概念和原则。
2.1 什么是 RESTful API
RESTful APIRepresentational State Transfer是一种设计风格用于构建分布式系统中的网络服务。它基于一组简洁的原则和约束使得不同的系统可以通过 HTTP 协议进行通信和交互。
2.2 RESTful API 的原则
RESTful API 的设计原则如下 资源将系统中的实体资源抽象为统一的资源模型通过 URI统一资源标识符进行唯一标识。 动词使用 HTTP 方法GET、POST、PUT、DELETE 等来表示对资源的不同操作。 状态转移通过请求的状态转移如创建、更新、删除等来实现对资源的操作。 无状态每个请求都是独立的服务器不会保存客户端的状态信息。
3 Django 的 RESTful API 设计实践
好了现在我们已经对 Django 和 RESTful API 有了初步的了解接下来让我们深入探讨 Django 框架下的 RESTful API 设计实践。我将带你逐步实现一个具有实用功能的示例项目让你更好地理解和掌握 Django 的 API 设计技巧。
3.1 项目介绍
这个项目是一个简单的待办事项管理应用。用户可以创建、查看、更新和删除待办事项。这个项目将帮助我们了解如何设计符合 RESTful API 原则的 Django 应用程序。
3.2 创建 Django 项目
首先创建一个 Django 项目。打开你的终端或命令提示符使用以下命令创建一个新的 Django 项目
django-admin startproject todoapp运行后会创建一个名为 todoapp 的新目录并在其中生成 Django 项目的初始结构。
3.3 创建应用程序
接下来创建一个 Django 应用程序。在终端中进入 todoapp 目录并运行以下命令
python manage.py startapp todos3.4 定义数据模型
在我们开始设计 API 视图之前我们需要定义待办事项的数据模型。打开 todos/models.py 文件在其中添加以下代码
from django.db import modelsclass Todo(models.Model):title models.CharField(max_length200)description models.TextField()created_at models.DateTimeField(auto_now_addTrue)completed models.BooleanField(defaultFalse)def __str__(self):return self.title这里我们定义了一个名为 Todo 的数据模型它包含了 title、description、created_at 和 completed 字段。__str__ 方法用于返回模型对象的字符串表示。
3.5 创建 API 视图
现在我们可以开始创建 API 视图了。在 todos/views.py 文件中添加以下代码
from rest_framework import viewsets
from .models import Todo
from .serializers import TodoSerializerclass TodoViewSet(viewsets.ModelViewSet):queryset Todo.objects.all()serializer_class TodoSerializer这里我们使用 Django REST Framework 提供的 viewsets.ModelViewSet 类来定义一个视图集。我们指定了查询集和序列化器类Django REST Framework 将自动生成常见的 CRUD创建、读取、更新、删除操作。
3.6 配置 URL 路由
为了让 Django 知道如何映射 URL 到我们的 API 视图我们需要配置 URL 路由。打开 todoapp/urls.py 文件并添加以下代码
from django.urls import include, path
from rest_framework import routers
from todos.views import TodoViewSetrouter routers.DefaultRouter()
router.register(rtodos, TodoViewSet)urlpatterns [path(, include(router.urls)),
]这里我们使用 Django REST Framework 提供的 DefaultRouter 类来自动生成 URL 路由并将 TodoViewSet 视图注册到 /todos 路径下。
等效于手动配置以下路由
GET /todos/获取所有待办事项的列表 POST /todos/创建新的待办事项 GET /todos/{pk}/获取特定待办事项的详细信息 PUT /todos/{pk}/更新特定待办事项的详细信息 PATCH /todos/{pk}/部分更新特定待办事项的详细信息 DELETE /todos/{pk}/删除特定待办事项
3.7 运行开发服务器
现在已经完成了 API 视图和 URL 路由的配置。可以启动 Django 开发服务器了然后测试 API。在终端中运行以下命令
python manage.py runserver服务器启动后你可以在浏览器中访问 http://localhost:8000/todos 来查看 API 的根路径。还可以使用工具如 Postman 来测试 API。
3.8 示例代码总结
通过以上步骤我们成功地创建了一个简单的待办事项管理 API。我们定义了数据模型、创建了 API 视图并通过 URL 路由将其映射到相应的路径上。后续可以根据自己的需求扩展和定制这个 API
3.9 添加序列化器
项目要使用了序列化器来将模型数据转换为 JSON 格式。现在创建一个序列化器来定义如何序列化和反序列化待办事项模型。
在 todos/serializers.py 文件中添加以下代码
from rest_framework import serializers
from .models import Todoclass TodoSerializer(serializers.ModelSerializer):class Meta:model Todofields __all__这里我们导入了 serializers 模块并创建了一个名为 TodoSerializer 的序列化器类指定了模型类和要序列化的字段集合。可以使用 __all__ 表示序列化所有字段。
3.10 运行数据库迁移
在使用新的数据模型和序列化器之前需要运行数据库迁移以创建相应的数据表。在终端中运行以下命令
python manage.py makemigrations
python manage.py migrate3.11 测试 API
现在我们已经完成了 API 的设计和配置。让我们测试一下我们的 API 是否正常工作。
可以使用浏览器或者 API 测试工具发送 HTTP 请求来测试 API。以下是一些示例请求 获取所有待办事项发送 GET 请求到 http://localhost:8000/todos/。 创建新的待办事项发送 POST 请求到 http://localhost:8000/todos/并在请求体中包含待办事项的数据。 获取单个待办事项发送 GET 请求到 http://localhost:8000/todos/{id}/其中 {id} 是待办事项的 ID。 更新待办事项发送 PUT 或 PATCH 请求到 http://localhost:8000/todos/{id}/并在请求体中包含更新后的待办事项数据。 删除待办事项发送 DELETE 请求到 http://localhost:8000/todos/{id}/其中 {id} 是待办事项的 ID。
可根据你的需求和工具的要求进行请求测试。
3.12 鉴权和权限控制
在实际应用中通常需要对 API 进行鉴权和权限控制以确保只有授权用户可以访问和修改数据。
Django REST Framework 提供了各种鉴权和权限控制的选项。例如你可以使用 Token 认证、JWTJSON Web Token认证或基于 OAuth 的认证来保护你的 API。
你还可以使用装饰器类似注解的概念、权限类和视图集的属性来定义各种访问控制规则例如只允许拥有特定权限的用户进行操作。
关于这个详细的内容比较多我们后续另起一篇文章分享。
3.13 其他功能和扩展
Django REST Framework 提供了许多其他功能和扩展帮助你更好地构建和管理 RESTful API。
一些常见的功能和扩展包括 分页处理大量数据时可以使用分页功能来限制结果集的大小并提供下一页和上一页的链接。 过滤和搜索允许用户根据指定的条件过滤和搜索数据。 排序允许用户按照指定的字段对数据进行排序。 版本控制允许你管理和控制不同版本的 API 接口。 缓存提供缓存功能提高 API 的性能和响应速度。 今天的分享就到这里如果文章的内容对你有所帮助欢迎点赞收藏转发感谢。