【发布时间】:2020-12-07 03:05:26
【问题描述】:
我有一个问题,因为我以前遇到过这种情况,我想知道最佳做法。
假设您想要这三个端点。
host:port/api/movies/published/2012 从 '2012' 返回所有按发布日期(M13,M1)排序的
host:port/api/movies/published/2012/8 从 '2012-08' 返回全部按发布日期(M1)排序
host:port/api/movies/published/2012/8/15 返回所有来自 '2012-08-15' 的按发布日期(M1)排序
你会做一个像这样的通用端点,或者在这些情况下什么是最佳实践?你会怎么解决呢?
[HttpGet("published/{year:int}/{month:int?}/{day:int?}/")]
public void GetMoviesSortedByPublishedDateAsync(int year, int month = 0, int day = 0)
{
if (month == 0)
{
var date = new DateTime(year, 1, 1);
await _cosmosDbService.GetMoviesByYear(date.Year);
}
else if(day == 0)
{
var date = new DateTime(year, month, 1);
await _cosmosDbService.GetMoviesByYearAndMonth(date.Year, date.Month);
}
else
{
var date = new DateTime(year, month, day);
await _cosmosDbService.GetMoviesByPublishedDate(date);
}
}
【问题讨论】:
-
老实说,您的代码看起来是一种足够体面的方法。它不工作吗?
-
为什么你需要这三个?第一个应该付出一切。所以你的解决方案是给出重复和三次。您从第一个查询中获得所有信息。然后,您会在 8 月获得所有内容的副本。然后在 8 月 15 日重复三次。
-
我的意思是,它应该可以工作,但是有没有更好更有效的方法来解决它?
标签: c# asp.net-core azure-cosmosdb