2016-05-09 137 views
1

我目前正在研究一个基于django和django-restframework的应用程序。该API将根据请求的时间范围(每周)提供json编码的事件/任务对象。如果我认为后端作为一个黑我归结为如下所示的URL/API方案:日历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结构。

这导致我到我的问题: 我不能决定实现这个API结构的哪种方法是与django restframework“最干净”。

现在我明白了以下可能性:

  • 一个defaultrouter中每个,一天,一周
  • 实现与默认URL映射
  • 的定制路由器利用DRF-嵌套路由器模块

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

预先感谢和问候

Nerade

回答

0

一种替代方法将是,以查看所有的这些“过滤”选项查询参数,而把重点放在支撑过滤本身。如果你使用这种方法,你的URL将是/calendar/events/。相应的过滤将是

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

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

也许用作背景是JSON API spec,它描述了组织API的一些最佳实践,这有助于您在前端使用JS框架

+0

感谢您向我展示通过过滤器的方法。我必须承认,这个想法到目前为止还没有穿过我的脑海。尽管如此,我对url的格式并不满意。我个人不喜欢url参数,如果我能避免它们。但既然没有其他建议,我可以用这种方式作为后备。 – Nerade