首页 > 解决方案 > 在 ASP.Net 路由参数处理中指定格式说明符?

问题描述

构建 ASP.Net Core 5.0 服务。为了使该服务镜像我们的其他 API,我想要:

拥有支持以下 URI 的路由

// returns a single item
/api/Items/{id}

// returns multiple items
/api/Items/?date={date}

在上面,{id}​​ 可以是 int 或 guid,日期格式为 YYYYMMDD

夫妻

[ApiController]
[Route("Items")]
public class ItemController: ControllerBase
{
    [HttpGet("{id}")]
    public Item Get(string id)
    {
    }

    [HttpGet()]
    public IEnumerable<Item> Get([FromQuery] DateTime date)
    {
       return new List<Item> { new Item() };
    }
}

当我运行它时,我正在使用 Swagger 功能进行调试,似乎我得到了两种方法:

/Items/{id}
/Items/?date={date}

到目前为止一切顺利,除了我想支持 YYYYMMDD 的日期字符串,但默认日期转换器不支持。

一个 kludge 是把它变成一个字符串并在函数(boo)中转换。理想情况下,我想为所有端点注册一个额外的日期解析器。

想法?

标签: asp.netrestasp.net-core

解决方案


推荐阅读