ASP.NET 核心 API 的 GET 请求中的可选参数不使用 Swagger
Optional Parameter in GET Requests for ASP.NET Core API not Working with Swagger
我正在处理一个如下所示的端点:
GET {{url}}/v1.0/GroupsInfo/StuffToGet/1/2/hea
其中 2 个整数是特定 ID,末尾的文本是搜索词。
我希望最后一个参数(搜索文本)是可选的。我已经使用以下方法工作,但它在 Swagger 中不是强制性的:
[Route("[action]/{catId:int}/{dogId:int}/{search?}")]
public IActionResult StuffToGet(int catId, int dogId, string search)
{
// do stuff
}
Swagger 忽略了路由约束中 Search 参数末尾的问号。
这是一个已知问题,还是我需要修改一些自定义代码才能让 Swagger 识别该可选标志?
创建两个具有相似路线的动作,但其中一个没有搜索参数。两个动作调用相同的业务层代码。
你的变体会起作用,但如果你对 swagger 有疑问,试试这个
[Route("[action]/{catId:int}/{dogId:int}]
[Route("[action]/{catId:int}/{dogId:int}/{search}")]
public IActionResult StuffToGet(int catId, int dogId, string search)
{
// do stuff
}
或者这个
[Route("StuffToGet/{catId:int}/{dogId:int}/{search}")]
public IActionResult StuffToGet(int catId, int dogId, string search)
{
// do stuff
}
[Route("StaffToGet/{catId:int}/{dogId:int}]
public IActionResult StuffToGet(int catId, int dogId)
{
return StuffToGet(catId, dogId,string.empty);
}
我正在处理一个如下所示的端点:
GET {{url}}/v1.0/GroupsInfo/StuffToGet/1/2/hea
其中 2 个整数是特定 ID,末尾的文本是搜索词。
我希望最后一个参数(搜索文本)是可选的。我已经使用以下方法工作,但它在 Swagger 中不是强制性的:
[Route("[action]/{catId:int}/{dogId:int}/{search?}")]
public IActionResult StuffToGet(int catId, int dogId, string search)
{
// do stuff
}
Swagger 忽略了路由约束中 Search 参数末尾的问号。
这是一个已知问题,还是我需要修改一些自定义代码才能让 Swagger 识别该可选标志?
创建两个具有相似路线的动作,但其中一个没有搜索参数。两个动作调用相同的业务层代码。
你的变体会起作用,但如果你对 swagger 有疑问,试试这个
[Route("[action]/{catId:int}/{dogId:int}]
[Route("[action]/{catId:int}/{dogId:int}/{search}")]
public IActionResult StuffToGet(int catId, int dogId, string search)
{
// do stuff
}
或者这个
[Route("StuffToGet/{catId:int}/{dogId:int}/{search}")]
public IActionResult StuffToGet(int catId, int dogId, string search)
{
// do stuff
}
[Route("StaffToGet/{catId:int}/{dogId:int}]
public IActionResult StuffToGet(int catId, int dogId)
{
return StuffToGet(catId, dogId,string.empty);
}