你可能不知道的 Django Rest Framework 的两个新特性

前端、甚至大前端发展如此火爆的 2017 年(我相信 2018 年一样)刚过去,像 MVC 架构那样直接使用后端模板渲染前端页面的方式已经不被推崇了(当然有些场景下还是蛮适合的),交互的体验和难度都已经和 MVVM 架构的 Front-End 相差了 108000 Km -- 用户体验差,开发难度还高。现在是 VueJS / ReactJS / AngularJS 与使用 JSON 格式的 Back-End 交换数据的世界。作为一个 Django 使用者,DRF(Django Rest Framework,后面使用简称)也理所当然的变成 Django 开发者必学的一个 Package。


这篇文章我简单介绍一下 DRF 3.6 的两个新特性

1. 内置交互式API文档支持(Built-in interactive API documentation support)

新的 DRF API 交互式文档支持许多功能:

  • 实时 API 交互。
  • 支持各种认证方案。
  • Python,JavaScript 和 Command Line 客户端的代码片段。

依赖或可选的 Package:

  • coreapi Package 是本特性的依赖项,确保安装最新版本哦(2.3.0 或更高版本)
  • pygments Package 编程代码高亮(可选)
  • markdown Package markdown 语法高亮(可选)

要生效 API 交互文档特性,您仅需要这样将其包含在项目 URLconf 中:

from rest_framework.documentation import include_docs_urls

API_TITLE = 'API title'
API_DESCRIPTION = '...'

urlpatterns = [
    ...
    url(r'^docs/', include_docs_urls(title=API_TITLE,
                                     description=API_DESCRIPTION))]

2. 一个新的 JS 客户端库(A new JavaScript client library)

新的 JavaScript 客户端库允许您加载一种新的 API 模式,在应用程序层接口与该 API 交互,而不是显式构建提取请求(比如使用 axios 等前端类库)

下面是一个简短的例子,它演示了:

  • 加载客户端库和模式。
  • 实例化已认证的客户端。
  • 使用客户端进行 API 请求。
<html>
  <head>
    <script src="/static/rest_framework/js/coreapi-0.1.0.js"></script>
    <script src="/docs/schema.js"></script>
    <script>
        const coreapi = window.coreapi
        const schema = window.schema
        // Instantiate a client...
        let auth = coreapi.auth.TokenAuthentication({scheme: 'JWT', token: 'xxx'})
        let client = coreapi.Client({auth: auth})
        // Make an API request...
        client.action(schema, ['projects', 'list']).then(function(result) {
            alert(result)
        })
    </script>
  </head>
</html>

JavaScript 客户端库支持各种身份验证方案,可以由您的项目本身使用,也可以作为与 API 进行交互的外部客户端使用。

客户端不限于使用 REST 框架 API,尽管目前只支持加载 CoreJSON API 模式。后续将会计划支持 Swagger 和其他 API 模式。

有关更多详细信息,请参阅:

http://www.django-rest-framework.org/topics/api-clients/#javascript-client-library

原文发布于微信公众号 - 随心DevOps(heart-devops)

原文发表时间:2018-02-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

【Linux调优】linux系统性能监控与优化(1)–简介

最近几年做了很多性能优化的事情,但是一直没有形成一套理论,也没有很好的形成一个好的排查问题的流程,每次做优化,大多是经验式的查找,最近看了一下这本书《linux...

2656
来自专栏Grace development

RabbitMQ 初体验

RabbitMQ支持多线程处理消息队列,所有你可以开启多个消费者去执行消息队列内的任务。你可以像我这样

451
来自专栏州的先生

Django Web极简开发实战0:为什么是Django

1202
来自专栏黑白安全

黑白网一言、图片API上线

802
来自专栏我和PYTHON有个约会

爬虫0010:概述爬虫概述

在各行各业如火如荼快速发展的今天,市场是决定一家公司是否可持续发展最重要的一个衡量指标,市场的定位和发展核心是对行业数据的分析,对于数据的分析必须进行大量数据的...

521
来自专栏草根专栏

用ASP.NET Core 2.1 建立规范的 REST API -- 缓存和并发

本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblog...

853
来自专栏技术/开源

开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部...

2768
来自专栏PHP技术

从0到1构建美团压测工具

美团内部的RPC服务大多构建在Thrift之上,在日常开发服务的过程中,需要针对这些服务进行压力测试(以下简称压测)来发现潜在问题。常用的方法有: 使用一些脚本...

3146
来自专栏张善友的专栏

面向资源与面向活动的 Web 服务

每当一些 Web 应用服务提供方提出允许开发者集成他们的服务的 Web 服务 API 时,大家都非常关心由 API 实现的互操作设计模式。如果 API 使用的是...

1725
来自专栏osc同步分享

webSocket 发送消息给客户端

在配置websocket代理时使用simpleBroker(简单代理),就不需要使用消息服务器,简单向前端发送消息: @Override public voi...

36211

扫码关注云+社区