自定义 API 函数

Posted

技术标签:

【中文标题】自定义 API 函数【英文标题】:Custom API function 【发布时间】:2017-06-12 13:00:25 【问题描述】:

我正在使用 Django Rest Framework 和 Angular 来构建应用程序。我已经为我希望 Angular 在前端访问的模型创建了序列化程序和 ModelViewSet 类。

目前一切正常,但我希望拥有超出基本操作的功能。

现在,我只能从我的前端服务执行 CRUD 查询。但是,我想创建一个“获取最新”或更具体的功能。

最好让后端模型与其对应的 Angular 资源进行通信。

提前致谢!

【问题讨论】:

这在视图集的文档中有大量文档。 【参考方案1】:

您只需要在 Django 视图集中定义自定义端点。

class AccountViewSet(viewsets.ModelViewSet):
    """
    A simple ViewSet for viewing and editing the accounts
    associated with the user.
    """
    serializer_class = AccountSerializer
    permission_classes = [IsAccountAdminOrReadOnly]

    @list_route(methods=['get'])
    def get_most_recent(self):
        <get the most recent account code here>
        return Request(data, status=200)

然后在您的角度代码中,您只需向正确的端点发出请求......就像http://yoururl.com/accounts/get_most_recent。您可以通过在方法数组中定义要接受的动词来对任何 REST 动词(GET、POST...)执行此操作。

文档在这里:http://www.django-rest-framework.org/api-guide/viewsets/#modelviewset

【讨论】:

谢谢。 list_route 和 detail_route 有什么区别? list_route 是对端点的一般请求。 detail_route 发送一个主键,用于访问特定资源。 list_route 类似于 .com/user,而 detail_route 类似于 .com/user/1234(1234 是特定的用户 ID 号)。它全部在文档中。另外,如果这有帮助,请接受我的回答。

以上是关于自定义 API 函数的主要内容,如果未能解决你的问题,请参考以下文章

自定义 API 函数

之API 数据获取-自定义函数使用

Flink Table API & SQL 自定义 Scalar 标量函数

AWS API网关自定义授权程序AuthorizerConfigurationException

laravel api 验证自定义消息

UrlFetchApp 请求在菜单函数中失败,但在自定义函数中失败(连接到外部 REST API)