自定义 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 函数的主要内容,如果未能解决你的问题,请参考以下文章
Flink Table API & SQL 自定义 Scalar 标量函数