【问题标题】:Calendar API representation日历 API 表示
【发布时间】:2016-05-09 13:52:13
【问题描述】:

我目前正在开发基于 django 和 django-restframework 的应用程序。 API 将根据请求的时间范围(每周)交付 json 编码的事件/任务对象。如果我将后端视为一个黑盒,我可以归结为如下 URL/API 方案:

calendar/week/<year>/<week_no>/  --> Get all events on isoweek <week_no> in <year>
calendar/week/<year>/            --> Get current isoweek in <year>
calendar/week/                   --> Get current week

calendar/day/<year>/<day_no>/   --> Get all events on isoday <day_no> in <year>
calendar/day/<year>/            --> Get current isoday in <year>
calendar/day/                   --> Get current day

据我所知,这会给我一个很好的 API 结构。

这导致我的问题: 我无法确定使用 django restframework 实现此 API 结构的哪种方法是“最干净的”。

目前我看到以下可能性:

  • 每天和每周都有一个 DefaultRouter
  • 使用默认 url 映射实现自定义路由器
  • 使用 drf-nested-routers 模块

在这个问题上缺乏经验,所以我想对此发表一些意见。

提前致谢并致以最诚挚的问候

尼拉德

【问题讨论】:

    标签: python django api rest django-rest-framework


    【解决方案1】:

    另一种方法是将所有这些“过滤”选项视为查询参数,并专注于支持过滤本身。如果您使用这种方法,您的 URL 将是 /calendar/events/。相应的过滤将是

    /events/?week=41
    /events/?start=DDMMYY&end=DDMMYY
    /events/?day=53
    

    这将每次返回一个事件列表。如果您访问了/events/43/,它将为您提供 ID=43 的事件详细信息

    JSON API spec 可能用作背景,它描述了组织 API 的一些最佳实践,如果您在前端使用 JS 框架,这会有所帮助

    【讨论】:

    • 感谢您向我展示通过过滤器的方法。我必须承认,到目前为止,我还没有想到这个想法。不过,我对 url 的格式不太满意。如果我可以避免它们,我个人不喜欢 url 参数。但由于对此没有其他建议,我可以以这种方式作为后备。
    猜你喜欢
    • 2020-06-02
    • 2011-05-18
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多