Browser Enhancements - Django REST framework

浏览器增强-Django REST框架

浏览器增强

“过载邮件有两个没有争议的用途。模拟http为客户端提供的统一接口,比如不支持PUT或DELETE的Web浏览器。

RESTful Web服务题名/责任者:David L.

为了允许可浏览API发挥作用,REST框架需要提供一些浏览器增强功能。

从3.3.0版本开始,使用javascript启用这些功能,使用AJAX-形式图书馆。

基于浏览器的放置、删除等.

这个Ajax表单库支持基于浏览器的PUT, DELETE以及HTML表单上的其他方法。

包含库后,使用data-method属性,如下所示:

<form action="/" data-method="PUT">
    <input name='foo'/>
    ...
</form>

请注意,在3.3.0之前,这种支持是服务器端的,而不是基于javascript的。方法重载样式(如Ruby on Rails)不再受支持,因为它在请求解析中引入了一些微妙的问题。

基于浏览器的非表单内容提交

类支持基于浏览器的内容类型提交(如JSON)。Ajax表单库,使用表单字段data-override='content-type'data-override='content'属性。

例如:

<form action="/">
        <input data-override='content-type' value='application/json' type='hidden'/>
        <textarea data-override='content'>{}</textarea>
        <input type="submit"/>
    </form>

请注意,在3.3.0之前,这种支持是服务器端的,而不是基于javascript的。

基于URL的格式后缀

REST框架可以?format=json样式URL参数,它是确定应该从视图返回哪种内容类型的有用快捷方式。

控件控制此行为。URL_FORMAT_OVERRIDE背景。

基于HTTP头的方法重写

在3.3.0版本之前,半扩展头X-HTTP-Method-Override支持重写请求方法。这种行为不再存在于核心中,而是可以在需要时使用中间件进行添加。

例如:

METHOD_OVERRIDE_HEADER = 'HTTP_X_HTTP_METHOD_OVERRIDE'

class MethodOverrideMiddleware:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        if request.method == 'POST' and METHOD_OVERRIDE_HEADER in request.META:
            request.method = request.META[METHOD_OVERRIDE_HEADER]
        return self.get_response(request)

基于URL的接受标头

在3.3.0版本之前,REST框架包含了对?accept=application/json样式URL参数,这将允许Accept标题将被重写。

由于引入了内容协商API,此行为不再包含在CORE中,而是可以使用自定义内容协商类来添加(如果需要的话)。

例如:

class AcceptQueryParamOverride()
    def get_accept_list(self, request):
       header = request.META.get('HTTP_ACCEPT', '*/*')
       header = request.query_params.get('_accept', header)
       return [token.strip() for token in header.split(',')]

HTML 5不支持放置和删除表单吗?

没有。它一度打算支持PUTDELETE表格,但后来从规格上掉下来...有遗骸正在进行的讨论关于增加对PUTDELETE,以及如何支持表单编码数据以外的内容类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QMQ2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值