3.6 Announcement

Django REST framework 3.6

3.6 版本为 REST framework 增加了两个主要的新功能。

  1. 内置交互式 API 文档支持。
  2. 新的 JavaScript 客户端库。
height="531" width="100%" src="https://www.django-rest-framework.org/img/api-docs.gif">

上图:交互式 API 文档。


资金 (Funding)

如果没有 Mozilla 对项目的支持以及我们的合作资金模式,3.6 版本是不可能实现的。

如果您在商业上使用 REST framework,并且希望看到这项工作继续进行,我们强烈鼓励您通过**注册付费计划**来投资其持续开发。

非常感谢我们所有的赞助商,特别是我们的高级支持者 RoverSentryStreamMachinalisRollbarMicroPyramid


交互式 API 文档 (Interactive API documentation)

REST framework 的新 API 文档支持许多功能:

  • 实时 API 交互。
  • 支持各种身份验证方案。
  • Python、JavaScript 和命令行客户端的代码片段。

coreapi 库作为 API 文档的依赖关系是必需的。确保安装最新版本 (2.3.0 或以上)。pygmentsmarkdown 库是可选的,但建议使用。

要安装 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))
]

一旦安装完毕,您会看到一些像这样的东西:

在接下来的几周里,我们可能会对 API 文档进行进一步的改进。请记住,这是一个新特性,如果您遇到任何问题或限制,请给我们反馈。

有关记录 API 端点的详细信息,请参阅 “记录 API” 部分。


JavaScript 客户端库 (JavaScript client library)

JavaScript 客户端库允许您加载 API 模式,然后在应用层接口上与该 API 交互,而不是显式地构造 fetch 请求。

这里有一个简单的示例来演示:

  • 加载客户端库和模式。
  • 实例化经过身份验证的客户端。
  • 使用客户端发出 API 请求。

index.html

<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

            // 实例化客户端...
            let auth = coreapi.auth.TokenAuthentication({scheme: 'JWT', token: 'xxx'})
            let client = coreapi.Client({auth: auth})

            // 发出 API 请求...
            client.action(schema, ['projects', 'list']).then(function(result) {
                alert(result)
            })
        </script>
    </head>
</html>

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

客户端不限于使用 REST framework API,尽管它目前仅支持加载 CoreJSON API 模式。计划支持 Swagger 和其他 API 模式。

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

Python 客户端库的身份验证类 (Authentication classes for the Python client library)

Python 客户端库中以前的身份验证支持仅限于允许用户提供显式标头值。

通过引入 BasicAuthenticationTokenAuthenticationSessionAuthentication 方案,我们现在可以更好地支持处理身份验证的细节。

您可以在实例化新客户端时包含身份验证方案。

auth = coreapi.auth.TokenAuthentication(scheme='JWT', token='xxx-xxx-xxx')
client = coreapi.Client(auth=auth)

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


弃用 (Deprecations)

更新 coreapi (Updating coreapi)

如果您正在使用 REST framework 的模式生成,或者想要使用 API ​​文档,那么您需要更新到最新版本的 coreapi。(2.3.0)

从路由器生成模式 (Generating schemas from Router)

3.5 版本用于生成模式视图的路由器参数 (例如 schema_titleschema_urlschema_renderers) 的 “等待弃用” 现在已升级为 “弃用” 警告。

您应该使用 get_schema_view() 函数,而不是使用 DefaultRouter(schema_title='Example API'),并在 URL conf 中显式包含视图。

DjangoFilterBackend

3.5 版本内置的 DjangoFilterBackend “等待弃用” 警告现已升级为 “弃用” 警告。

您应该更改您的导入和 REST framework 过滤器设置如下:

  • rest_framework.filters.DjangoFilterBackend 变为 django_filters.rest_framework.DjangoFilterBackend
  • rest_framework.filters.FilterSet 变为 django_filters.rest_framework.FilterSet

What’s next

在未来几周内,API 文档和 JavaScript 客户端库可能会有一些改进,其中可能包括以下部分:

  • 支持私有 API 文档,需要登录。
  • JavaScript 客户端和 API 文档中的文件上载和下载支持。
  • JavaScript 客户端库的综合文档。
  • 自动在 API 文档代码段中包含身份验证详细信息。
  • 在命令行客户端中添加身份验证支持。
  • 支持在 JavaScript 客户端中加载 Swagger 和其他模式。
  • 改进了对记录参数模式和响应模式的支持。
  • 完善 API 文档交互模式。

一旦这些改进工作完成,我们将开始实时支持 3.7 版本的特性工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容\[1\]和\[2\],出现"Invalid bound statement (not found)"错误的原因可能是项目找不到对应的xxxMapper.xml文件。解决方法可以尝试以下几种: 1. 确保在启动Spring Boot应用程序的类上添加了@MapperScan注解,并指定了正确的Mapper接口所在的包路径。 2. 确保xxxMapper.xml文件与Mapper接口在同一个包路径下,并且命名空间(namespace)与xml文件的包路径一致。 3. 检查方法名称是否一致,确保在Mapper接口和xxxMapper.xml文件中的方法名称一致。 4. 如果xxxMapper.xml文件中有中文注释,尝试去除注释并保存文件。 5. 尝试在xxxMapper.xml文件中添加一个空格或空行,并保存文件。 6. 如果以上方法都没有解决问题,可能是xxxMapper.xml文件本身编写有问题,需要检查xml文件的语法和逻辑是否正确。 7. 还有可能是没有将xxxMapper.xml文件添加到扫描的配置中,可以检查一下是否在配置文件中正确配置了Mapper的扫描路径。\[3\] 综上所述,您遇到的问题"Invalid bound statement (not found)"可能是由于xxxMapper.xml文件未找到或配置有误导致的。您可以根据上述方法逐一排查并解决问题。 #### 引用[.reference_title] - *1* [Invalid bound statement (not found): com.jd.springboot.mapper.UserMapper.insert 解决方法](https://blog.csdn.net/weixin_44047784/article/details/123993594)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Invalid bound statement (not found): com.example.demo.mapper.getUser.](https://blog.csdn.net/xxpxxpoo8/article/details/127548543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值