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

模式对于自动生成文档是一个很有用的工具,也可以用来动态调用可以于API交互的客户端库。

Core API

为了提供模式支持,REST framework 使用核心API。

核心API是描述API的规范文档,它被用来提供可用端点的内部表现方式和API公开的可能的交互。它既可以在服务器端,也可以在客户端。

当使用在服务器端,核心代码允许API来支持对各种模式或者超媒体格式的渲染。当使用在客户端,核心API允许动态驱动客户端库,可以跟公开支持的模式或者超媒体格式的任何API交互。

Adding a schema

REST framework 支持明确定义模式视图或者自动生成模式。由于使用了视图集(viewset)和路由(router),可以简化使用自动模式生成。

你可能需要安装 coreapi python包

pip3 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),
...
]

如果访问/visit/端点在浏览器上,你现在可以看到corejson变成一个可选选项。

我们也可以从命令行请求

默认的输出格式是使用Core Json编码的。其他模式格式,比如Open API也是支持的

Using a command line client

现在我们的API暴露了一个模式端点,我们可以使用一个动态的客户端库来与API交互。为了演示这一点,让我们使用核心API命令行客户端。

首先安装模块:

pip3 install coreapi-cli

用法:

现在使用命令行客户端加载API模式

还没有认证,所以现在我们只能看到只读的端点。

使用命令行客户端,列出存在的snippet

一些API端点需要带名称的参数,比如,回到之前高亮的HTML里面某一个特殊的snippet,需要提供一个id

Authenticating our client

如果想要创建,编辑,删除snippets,就需要验证是否为一个合法的用户。在这个事例里,我们只是使用了基础的验证。

shuais-MBP:~ dandyzhang$ coreapi credentials add 127.0.0.1 dandy:password. --auth basic
Added credentials
127.0.0.1 "Basic ZGFuZHk6cGFzc3dvcmQuMQ=="

现在再去访问之前的模式,就能够看到整个可以可用的交互了。

现在可以跟这些端点交互了。例如创建一个新的snippet

同样的,也可以进行删除

shuais-MBP:~ dandyzhang$ coreapi action app01 snippets delete --param id=

和命令行客户端一样,开发者也可以使用客户端库来跟你的API交互。

Django REST framework 第七章 Schemas & client libraries的更多相关文章

  1. Tutorial 7: Schemas & client libraries

    转载自:http://www.django-rest-framework.org/tutorial/7-schemas-and-client-libraries/ Tutorial 7: Schema ...

  2. Django REST framework 第六章 ViewSets & Routers

    REST framework包含了一个可以处理ViewSets的抽象, 它允许开发人员专注于API的状态跟交互进行建模,并使得URL构建结构基于通用的约定自动处理. ViewSet类跟View类几乎相 ...

  3. Django REST framework 第五章 Relationships & Hyperlinked APIs

    到目前为止,API内部的关系是使用主键来代表的.在这篇教程中,我们将提高API的凝聚力和可发现性,通过在相互关系上使用超链接. Creating an endpoint for the root of ...

  4. Django REST framework 第四章 Authentication

    到目前为止,撰写的API没有任何限制关于谁能更新.删除snippet. 我们更想要一些高级行为来确保: 1.代码段总是跟创建者有关联 2.只要认证通过的用户才能创建 3.只有创建者有权限更新或者删除 ...

  5. Django REST framework 第三章 CBV

    从介绍Django快开始,我们就一直在使用FBV的方式来撰写代码,二者本质上并没有太大的区别,然而到了REST framework,更会倾向于用CBV来写API的视图,后面会看到这个方式的强大,它允许 ...

  6. django rest framework 详解

    Django REST framework 是用于构建Web API 的强大而灵活的工具包. 我们可能想使用REST框架的一些原因: Web浏览API对于开发人员来说是一个巨大的可用性. 认证策略包括 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (41) ------ 第七章 使用对象服务之标识关系中使用依赖实体与异步查询保存

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-7  标识关系中使用依赖实体 问题 你想在标识关系中插入,更新和删除一个依赖实体 ...

  9. Django Rest Framework源码剖析(七)-----分页

    一.简介 分页对于大多数网站来说是必不可少的,那你使用restful架构时候,你可以从后台获取数据,在前端利用利用框架或自定义分页,这是一种解决方案.当然django rest framework提供 ...

随机推荐

  1. react-native中的state

    我们使用两种数据来控制一个组件:props和state.props是在父组件中指定, 而且一经指定,在被指定的组件的生命周期中则不再改变. 对于需要改变的数据,我们需要使用state. 假如我们需要制 ...

  2. 使用python制作验证码

    方法一 简单型:使用random模块制作一个随机字母与数字的验证码 import random def make_code(n): res='' for i in range(n): num=str( ...

  3. 我的winows server 2012 突然多了个piress的帐户,后来一查原来是mysql漏洞的问题,郁闷

    今天打开远程连接到windows server 2012,服务器上装的360竟然提示有木马.吓了一跳.再检查计算机账户,多了个piress账户.把这个账户在百度一搜索,原来还有其它人中招. 后来发现网 ...

  4. socket关闭状态问题

    下面是对 譬如  “CLOSE_WAIT” 现象的一些解释: 主动关闭方和被动方经历的状态:FIN_WAIT_1(主动关闭一方): 当SOCKET在ESTABLISHED状态时,它想主动关     闭 ...

  5. (map string)Crazy Search hdu1381

    Crazy Search Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  6. Linux设备树(一 概述)

    一 概述 设备树(Device tree)是一套用来描述硬件属相的规则.ARM Linux采用设备树机制源于2011年3月份Linux创始人Linus Torvalds发的一封邮件,在这封邮件中他提倡 ...

  7. python自动化开发-[第二十三天]-初识爬虫

    今日概要: 1.爬汽车之家的新闻资讯 2.爬github和chouti 3.requests和beautifulsoup 4.轮询和长轮询 5.django request.POST和request. ...

  8. eclipse新建maven项目默认jre为1.5的问题

    在maven的settings.xml中添加如下内容解决 <profiles> <profile> <id>jdk-1.8</id> <activ ...

  9. 【.NET】using 语句中使用的类型必须可隐式转换为"System.IDisposable"

    #问题: 在使用EF开发中,出现如下错误:“using 语句中使用的类型必须可隐式转换为“System.IDisposable” #原因: 项目中没有引用 EntityFramework 这个程序集: ...

  10. SQL记录-ORACLE 12C初体验

    1.部署 2.使用