Django REST框架--模式与客服端库

教程7:模式和客户端库

模式是一种机器可读文档,用于描述可用的API端点,其URLS以及它们支持的操作。

模式可以是自动生成文档的有用工具,也可用于驱动可与API进行交互的动态客户端库。

核心API

为了提供架构支持,REST框架使用Core API

Core API是用于描述API的文档规范。它用于提供可用端点的内部表示格式和API暴露的可能交互。它可以用于服务器端或客户端。

当使用服务器端时,Core API允许API支持各种模式或超媒体格式的渲染。

当客户端使用时,Core API允许动态驱动的客户端库可以与暴露支持的模式或超媒体格式的任何API进行交互。

添加模式

REST框架支持明确定义的模式视图或自动生成的模式。由于我们使用的是视图集和路由器,我们可以简单地使用自动模式生成。

您需要安装coreapipython包才能包含API模式。

$ pip install coreapi

现在我们可以通过在URL配置中包含一个自动生成的模式视图来为API添加模式。

from rest_framework.schemas import get_schema_view schema_view = get_schema_view(title='Pastebin API') urlpatterns = [    url(r'^schema/$', schema_view), ... ]

如果您在浏览器中访问API根端点,则现在应该可以看到corejson 表示形式可用作选项。

模式格式

我们还可以通过在Accept标题中指定所需的内容类型从命令行请求模式。

$ http http://127.0.0.1:8000/schema/ Accept:application/coreapi+json
HTTP/1.0 200 OK Allow: GET, HEAD, OPTIONS Content-Type: application/coreapi+json { "_meta": { "title": "Pastebin API" }, "_type": "document", ...

默认输出样式是使用Core JSON编码。

还支持其他模式格式,例如Open API(以前称为Swagger)。

使用命令行客户机

现在我们的API暴露了架构端点,我们可以使用动态客户端库来与API进行交互。为了演示这个,我们来使用Core API命令行客户端。

命令行客户端可用作coreapi-cli包:

$ pip install coreapi-cli

现在检查它在命令行上可用...

$ coreapi
Usage: coreapi [OPTIONS] COMMAND [ARGS]... Command line client for interacting with CoreAPI services. Visit http://www.coreapi.org for more information. Options: --version Display the package version number. --help Show this message and exit. Commands: ...

首先,我们将使用命令行客户机加载API模式。

$ coreapi get http://127.0.0.1:8000/schema/ <Pastebin API "http://127.0.0.1:8000/schema/"> snippets: { highlight(id) list() read(id) } users: { list() read(id) }

我们还没有认证,所以现在我们只能看到只读端点,这与我们如何设置API的权限一致。

我们尝试列出现有的片段,使用命令行客户端:

$ coreapi action snippets list
[
    { "url": "http://127.0.0.1:8000/snippets/1/", "id": 1, "highlight": "http://127.0.0.1:8000/snippets/1/highlight/", "owner": "lucy", "title": "Example", "code": "print('hello, world!')", "linenos": true, "language": "python", "style": "friendly" }, ...

一些API端点需要命名参数。例如,要获取特定代码段的高亮度HTML,我们需要提供一个id。

$ coreapi action snippets highlight --param id=1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Example</title> ...

认证我们的客户

如果我们想要创建,编辑和删除片段,我们需要作为有效用户进行身份验证。在这种情况下,我们只需使用基本的auth。

确保更换<username>,并<password>与您的实际用户名和密码下面。

$ coreapi credentials add 127.0.0.1 <username>:<password> --auth basic Added credentials 127.0.0.1 "Basic <...>"

现在,如果我们再次获取架构,我们应该可以看到一整套可用的交互。

$ coreapi reload
Pastebin API "http://127.0.0.1:8000/schema/"> snippets: { create(code, [title], [linenos], [language], [style]) delete(id) highlight(id) list() partial_update(id, [title], [code], [linenos], [language], [style]) read(id) update(id, code, [title], [linenos], [language], [style]) } users: { list() read(id) }

我们现在可以与这些端点进行交互。例如,要创建一个新的代码段:

$ coreapi action snippets create --param title="Example" --param code="print('hello, world')" { "url": "http://127.0.0.1:8000/snippets/7/", "id": 7, "highlight": "http://127.0.0.1:8000/snippets/7/highlight/", "owner": "lucy", "title": "Example", "code": "print('hello, world')", "linenos": false, "language": "python", "style": "friendly" }

并删除片段:

$ coreapi action snippets delete --param id=7

除了命令行客户端,开发人员还可以使用客户端库与您的API进行交互。Python客户端库是第一个可用的,并且计划即将发布一个Javascript客户端库。

有关定制模式生成和使用Core API客户端库的更多详细信息,您需要参考完整的文档。

回顾我们的工作

我们现在拥有一个非常少量的代码,它拥有完整的可以浏览网页的粘贴程式Web API,它包含一个模式驱动的客户端库,并具有身份验证,每个对象权限和多个渲染器格式。

我们已经走过了设计过程的每个步骤,并且了解了如果我们需要自定义任何我们可以逐渐工作的方式,以简单地使用常规的Django视图。

 

现在去构建真棒的东西

转载于:https://www.cnblogs.com/chenyang13677/p/7571742.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django REST Framework (DRF) 是一套用于构建高效、功能丰富的 API 的 Python 框架。它是基于 Django Web 应用框架的一个独立组件,并提供了一系列工具和服务,旨在简化 API 开发过程。 ### 功能特点: #### 简化 API 创建: - DRF 提供了一套完整的、易于使用的 API 创建工具,包括认证、权限控制、序列化和分页等功能。 - 可以快速生成 CRUD(创建、读取、更新、删除)操作所需的视图和序列化器,降低了开发成本和提高了开发效率。 #### 高度自定义性: - DRF 允许开发者高度定制 API 行为,包括路由配置、错误处理、响应渲染等。 - 支持多种验证机制和权限系统,使得安全性得到保障。 #### 易于集成: - 它可以与 Django 无缝集成,也可以作为一个独立项目与其他框架配合工作,如 Flask 或 FastAPI。 - 提供了丰富的文档和示例,便于学习和使用。 #### 强大的功能集: - **模型绑定**:自动将数据模型映射到 API 资源上,简化数据管理。 - **序列化与反序列化**:强大的序列化能力允许轻松转换数据格式,并支持 JSON、XML 等多种格式。 - **动态路由**:可以根据需要动态生成和修改路由,增加灵活性。 - **过滤与排序**:提供丰富的方式对查询结果进行过滤和排序,提升用户体验。 ### 示例使用场景: - 开发需要大量数据交互的应用程序,例如电子商务平台、社交媒体应用、企业管理系统等,特别是当需要对外提供 RESTful 格式的 API 接口时。 ### 相关问题: 1. Django REST Framework 与其他后端框架相比有何优势? 2. 如何开始使用 Django REST Framework 开发自己的 API? 3. Django REST Framework 中如何实现更复杂的数据处理逻辑?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值