社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

临书 • 7 年前 • 961 次点击  

前端、甚至大前端发展如此火爆的 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 模式。

有关更多详细信息,请参阅 JavaScript 客户端库文档

--正文完--

转载请注明出处:zhuanlan.zhihu.com/p/33773485

如果大家觉得此类文章对你很有用,请务必点个关注,谢谢啦

文章不长,了解它们是为了解决什么问题就好,给大脑建个索引,能用上就去看文档,最后求关注


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/mwGTcVcUrb
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/7385
 
961 次点击