具有自定义类型的路径不会显示在Swagger中

时间:2017-10-17 10:54:29

标签: c# routes swagger swashbuckle nodatime

我有一个端点采用自定义类型(在这种特殊情况下是一个NodaTime.LocalDate)。该类型具有自定义模型绑定器,并使用MapType<>在Swagger中进行映射。

当路径中使用类型作为路径参数时,端点不会显示在Swagger / Swashbuckle中。但是,如果我将其删除(以便将其作为URL参数包含在内),则显示正常。

端点的简单版本:

public class MyController : System.Web.Http.ApiController
{
    [Route( "my/route/{date}" )] // Doesn't show up
    [Route( "my/route" )]        // Does show up
    [HttpPut]
    public Task<IHttpActionResult> MyEndpoint( LocalDate date, InputModel inputModel ) {
        // Do stuff...
    }
}

请注意,两个端点实际上都可以正常工作,但只是没有显示。如果我将类型更改为DateTime,我也可以显示两个端点 - 但我不希望这样,因为这会改变有效的输入集。

1 个答案:

答案 0 :(得分:0)

我通过从字符串添加自定义绑定和自定义转换器解决了这个问题。 需要执行这些操作,以便ApiExplorer解析路径。之后,Swagger也解决了这条路线。

请参阅我的示例:https://stackoverflow.com/a/47123965/908936