我有一个控制器,可以从路由中获取ID。
[HttpGet]
[Route("{vehicleId}")]
public InfoDto GetInfo([FromUri] VehicleDetailsRequest request)
{
return ...;
}
VehicleDetailsRequest
对象如下所示(验证器来自FluentValidation):
[Validator(typeof(VehicleDetailsRequestValidator))]
public class VehicleDetailsRequest
{
public int VehicleId { get; set; }
public string Lang { get; set; }
}
我可以使用http://localhost/controller/123?lang=sv
来查询此操作,但是我的招摇文档如下:
如何让Swashbuckle / Swagger只给我看一个vehicleId
,但仍然保留FluentValidation?
我正在使用Swashbuckle 5.6和.Net Framework 4.6.2。
答案 0 :(得分:0)
我认为操作方法签名有问题。 URL的参数应存在于操作方法参数中。
此外,如果您只想在查询字符串中使用lang,那么它也应该在操作中作为参数出现。
请注意,如果您在操作参数中指定对象,则其所有属性都将构成查询字符串。
因此,您的操作方法应如下所示:
# Add locale [en] if not in URL
RewriteCond %{REQUEST_URI} !^/[a-z]{2}/
RewriteRule ^(.*) /en/$1 [R=301,L]
这应该可以帮助您解决问题。