Django REST Framework Browsable API的不同版本控制方案

时间:2016-11-03 15:53:58

标签: python django django-rest-framework

我要求API不允许使用默认版本。所有客户端都需要明确指定任何资源的版本。我通过以下配置实现了这一目标:

**for tweet in tweets:
   #tweet obtained
   print(str(tweet['id'])+str(tweet['text']))**

这很好用,但我失去了使用可浏览的API渲染器的能力:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.ext.rest_framework.OAuth2Authentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.AcceptHeaderVersioning',
    'ALLOWED_VERSIONS': ['2.0'],
    'DEFAULT_RENDERER_CLASSES': (
        'api.renderers.CustomJSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ),
}

我想指定如果对可浏览API发出请求,则默认版本应为2.0。原因是在尝试使用可浏览的API时,默认值应该是最新版本,但是当以编程方式使用API​​时,用户不应该接受重大更改,因为他们忽略了指定版本。

如何让我的API需要一个版本但允许可浏览的API免除?

1 个答案:

答案 0 :(得分:0)

您可以更改默认版本控制类,以将版本分配给来自浏览器的请求。浏览器要求的媒体类型应为<input class="form-control" type="text" id="checkins" placeholder="Select Date" name="checkins"> ,而正常的API调用将要求this.renderer.image('http://www.myiconfinder.com/uploads/iconsets/256-256-6fc6f09b8c986ade7286aa71ba43c71e-trophy.png', point.plotX - (imgWidth/5), point.plotY + imgHeight, imgWidth, imgHeight) .attr({zIndex: 3}) .add()

text/html