美文网首页
api接口url化

api接口url化

作者: Joncc | 来源:发表于2019-02-28 14:52 被阅读0次

目录
为接口提供一个主页
为序列化类增加url

配置全局分页

  1. 为接口提供一个主页
    目前在浏览器中进行的测试,我们都是通过输入完整url来跳转网页,当提供的url变多时,难免会忘记哪些url是有效的。为了避免这种情况,我们为BrowserAPI提供一个主页,来引导我们测试。

为每个url都增加一个参数name。

urlpatterns = [
    url(r'^snippets/$', views.SnippetList.as_view(), name='snippet-list'),
    url(r'^snippets/(?P<pk>[0-9]+)/$', views.SnippetDetail.as_view(), name='snippet-detail'),
    url(r'^users/$', views.UserList.as_view(), name='user-list'),
    url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view(), name='user-detail')
]

在myapp下新建一个api_path.py
在myapp/api_path.py增加主页的view

from rest_framework.reverse import reverse
from rest_framework.response import Response
from rest_framework.decorators import api_view

@api_view(['GET'])
def api_root(request, format=None):
    return Response({
        'users': reverse('user-list', request=request, format=format),
        'snippets': reverse('snippet-list', request=request, format=format)
    })

完成这个功能只需要一个简单的FBV提供GET方法即可,这个view将返回所有有效的url(通过JSON格式)。
reverse方法通过url的名字,返回一个完整的url。
在myapp/api_path.py配置主页的url
尽量不要使用任何正则式,保证我们直接访问最原始的url就可以访问的接口的主页。
养成好习惯,为每个url都增加参数name。

urlpatterns = format_suffix_patterns([
    url(r'^$', views.api_root, name='api-index'),
    ...
])

配置后的接口主页


image.png

现在可以直接通过点击链接访问有效的url了,但是不要忘记当我们增加新的url后,要在主页的view中进行配置。

  1. 为序列化类增加url
    现在我们的json数据,表的关系是通过id联系的,现在我们希望用url代替id。

在snippet/serializers.py更改序列化类

class SnippetSerializer(serializers.HyperlinkedModelSerializer):
    ...
    highlight = serializers.HyperlinkedIdentityField(view_name='snippet-highlight', format='html')

    class Meta:
        ...
        fields = ('url', 'highlight', ...)


class UserSerializer(serializers.HyperlinkedModelSerializer):
    snippets = serializers.HyperlinkedRelatedField(many=True, view_name='snippet-detail', read_only=True)

    class Meta:
        ...
        fields = ('url', ...)

将ModelSerializer改为HyperlinkedModelSerializer。
在继承后,就自动会增加一个字段url,但是需要手动配置到fields中
为普通字段提供了HyperlinkedIdentityField,为外键字段提供了HyperlinkedRelatedField。其中最关键的参数view_name的值是url的参数name,也就是通过url配置中的name来获取到对应的url。

  1. 配置全局分页
    在drf_tutorial/settings.py配置分页
REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}

相关文章

  • api接口url化

    目录为接口提供一个主页为序列化类增加url 配置全局分页 为接口提供一个主页目前在浏览器中进行的测试,我们都是通过...

  • 2018-08-02

    数据渲染 根据后端提供API数据接口,将其渲染至前端页面... 文档接口:API-URL: http://api....

  • 调用API接口

    /** * 调用api接口 * @param url $apiurl api.muxiangdao.cn/Arti...

  • Markdown API接口文档demo

    Markdown API接口文档demo [TOC] 接口说明 1、新增机器人 请求URL api/v2/oper...

  • [DOC] api tpl in markdown

    环境说明 测试环境 线上环境 api接口 xxx url http://host/api/xxx header "...

  • SpringMvc自定义ApiVersion前缀注解

    背景 由于项目的规范需要,需要统一的api接口形式,由于接口可能存在不同的api版本,所以一般是在api接口url...

  • 在线生成网址二维码的API接口

    文字在线转图片二维码的公用API接口 在线生成网址二维码的API接口: 如果参数是URL ,需要进行URL编码后传...

  • node js(三)

    url模块 用途: 模块用于处理与解析 URL API 实例化URL 返回URL对象

  • ajax跨域解决方案(一):JSONP

    需求分析 获取豆瓣电影的api接口的数据 接口URL地址: http://api.douban.com/v2/m...

  • web-api总结

    总结一下ruby中如何写设计api接口: 1.api是程序之间的接口,一个服务端api接口包含http方法,URL...

网友评论

      本文标题:api接口url化

      本文链接:https://www.haomeiwen.com/subject/bhghuqtx.html