【问题标题】:How to send in empty url parameters with http request?如何使用 http 请求发送空 url 参数?
【发布时间】:2020-07-05 20:17:53
【问题描述】:

我正在制作一项 Alexa 技能来提供有关膳食的信息。使用此技能,用户将能够要求菜单。他们可以只要求一份菜单,也可以要求一份特定的菜单,例如早餐菜单。但我希望早餐参数和甜点菜单等菜单类型的参数是可选的。 我现在向 url 发送一个 GET 请求:.../Day/(day)/Slot/(slot)/Type/(type)。在这个 url 中,我希望 slot 和 type 参数为空。

我现在的代码: 控制器:

[HttpGet]
        [Route("something/Day/{day:datetime}/Slot/{slotId:long?}/Type/{typeId:long?}")]
        public async Task<List<something>> GetMeals(LocalDate day, long slotId = 1, long? typeId = null)

当两个参数都不为空或只有typeId参数为空时,请求找到控制器。但是当两者都为空或只有 slotId 参数为空时,请求找不到控制器。 当两个参数都为空时,请求如下所示:“something/Day/2020-02-20/Slot//Type/”

我无法更改路由,因为端点已被其他应用程序使用。

我做错了什么?谢谢你的帮助。

【问题讨论】:

  • 您是否尝试添加另一个[Route] 属性?喜欢[Route("something/Day/{day:datetime}/Slot/Type/{typeId:long?}")]
  • 这就是我一直在寻找的,非常感谢。

标签: c# http asp.net-core url


【解决方案1】:

你可以修改路线

[HttpGet]
[Route("something/Day/{day:datetime}")]
public async Task<List<something>> GetMeals(LocalDate day, long? slotId = 1, long? typeId = null)

使用示例:

something/Day/2020-03-25/?slotId=1&typeId=2

尝试创建带有两个斜杠的路由不起作用。路由模板分隔符'/'不能出现 连续。它必须由参数或文字分隔 价值。

[Route("/test/something/Day/{day:datetime}/Slot//Type/{typeId:long?}")] // does not work

【讨论】:

  • 抱歉忘了说我不能更改路由,因为它们被其他应用程序使用了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多