我在.NET Core 6中有这个控制器端点。我正在使用Swagger和NSwag Studio(最新版本v13.17.0.0)生成C#客户端:
[HttpGet("GetAllMinimalCalculationDtoOfMaterialByLoggedinUser/{isExistingBuildingCalculation:bool?}", Name = "GetAllMinimalCalculationDtoOfMaterialByLoggedinUser")]
[Produces("application/json")]
[ProducesResponseType(typeof(IEnumerable<MinimalCalculationDto>), (int)HttpStatusCode.OK),
ProducesResponseType((int)HttpStatusCode.InternalServerError)]
public ActionResult GetAllMinimalCalculationDtoOfMaterialByLoggedinUser(bool isExistingBuildingCalculation = false)
但NSwag Studio生成的客户端没有将此参数作为可选参数:
public virtual async System.Threading.Tasks.Task<System.Collections.Generic.ICollection<MinimalCalculationDto>> GetAllMinimalCalculationDtoOfMaterialByLoggedinUserAsync(bool isExistingBuildingCalculation, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
{
if (isExistingBuildingCalculation == null)
throw new System.ArgumentNullException("isExistingBuildingCalculation");
var urlBuilder_ = new System.Text.StringBuilder();
urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/api/v1/Calculation/GetAllMinimalCalculationDtoOfMaterialByLoggedinUser/{isExistingBuildingCalculation}");
urlBuilder_.Replace("{isExistingBuildingCalculation}", System.Uri.EscapeDataString(ConvertToString(isExistingBuildingCalculation, System.Globalization.CultureInfo.InvariantCulture)));
var client_ = _httpClient;
}
以上是生成的客户端结果,正如我们所看到的,如果参数isExistingBuildingCalculation为空,该结果具有抛出异常的显式代码。此外,在其方法签名中,该结果没有该参数的默认值false。
我想要的情况是,即使空检查仍然存在,那么至少默认值false应该出现在方法签名中,这样我就可以在不传递任何参数的情况下使用生成的方法,也可以在传递参数的情况下使用生成的方法。
我已经尝试在NSwag Studio中设置“生成可选参数”,但也没有任何效果,同样的结果:
NSwag Studio Settings
1条答案
按热度按时间jtw3ybtb1#
将签名更改为: