簡體   English   中英

WebApi 2路由? 要么 /

[英]WebApi 2 routing with ? or /

我剛剛在我的api中添加了大張旗鼓地生成一些文檔...

通常,我的前端代碼將執行如下“通過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#。

謝謝!

您可以執行以下兩條路線:

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

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

如果將路由從GetDisplayContainer更改為GetDisplayContainer/{id}則Swagger將知道該參數不在查詢字符串中,並應生成所需的輸出。

完整代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM