首页 > 解决方案 > WebApi 2 路由与?或者 /

问题描述

我刚刚在我的 api 中添加了 swagger 以生成一些文档......

通常,我的前端代码会像这样执行“通过 id 获取”:

https://whatever.com/api/GetDisplayContainer/A90555CD-931E-4D9D-D51D-08D63E83FCC6

但是,大摇大摆的“尝试一下”想要发送:

https://whatever.com/api/GetDisplayContainer?id=A90555CD-931E-4D9D-D51D-08D63E83FCC6

我希望能够支持这两种方式。我该怎么做?

以下是控制器方法的示例:

[HttpGet]
[Route("GetDisplayContainer")]
public ApiResponse<ContainerDisplayViewModel> GetDisplayContainer(Guid id)
{
    return ApiResponse.Convert(ResourceService, _containerService.GetDisplayContainerById(id));
}

我真的不想改变我现有的代码来以“查询字符串”的方式来做。因为它是一种完全有效的方式。但是能同时支持这两个就好了……

这是使用 .net core 2.1 的 C#。

谢谢!

标签: c#routesquery-stringasp.net-core-webapi

解决方案


你可以做两条路线:

[HttpGet]
[Route("GetDisplayContainer")]
public ApiResponse<ContainerDisplayViewModel> GetDisplayContainer([FromQuery] Guid id)
{
}

[HttpGet]
[Route("GetDisplayContainer/{id}")]
public ApiResponse<ContainerDisplayViewModel> GetDisplayContainerRoute([FromRoute] Guid id)
{
}

推荐阅读