代码之家  ›  专栏  ›  技术社区  ›  Michael Brown

Swashback MapType<Type>不适用于参数

  •  0
  • Michael Brown  · 技术社区  · 6 年前

    我有一个API端点,它将ShortGuid类作为参数,如下所示:

    [HttpGet("api/endpoint")]
    public async Task<IActionResult> GetTablesAsync(ShortGuid id){}
    

    生成以下内容的夸张定义:

    "parameters":[
        {
            "name":"guid",
            "in":"query",
            "required":false,
            "type":"string",
            "format":"uuid"
        },
        {
            "name":"value",
            "in":"query",
            "required":false,
            "type":"string"
        }
    ],
    

    我需要将该参数视为字符串,而不是ShortGuid对象。我已经有了一个JsonConverter,用于工作正常的类型,但是Swashback不理解它,所以我的模式不正确(这是我的swagger js客户端不工作)。我认为MapType<&燃气轮机;但是,这似乎只会影响响应对象,因为模式仍然将其视为短GUID。

    c.MapType<ShortGuid>(() => new Schema { Type = "string" });
    

    我是否需要一个ISchemaFilter来执行此操作?如果是这样的话,我该如何着手编写它(尝试了多次,但没有成功)

    0 回复  |  直到 6 年前
        1
  •  0
  •   AroglDarthu    3 年前

    要对查询字符串执行此操作,必须添加 TypeConverter 为了你的 ShortGuid .

    以下是一些关于它在其他情况下不起作用的信息: https://github.com/dotnet/aspnetcore/issues/4825

    还请注意,如果您使用 Nullable<ShortGuid> ,您还需要添加 c.MapType<ShortGuid?>(...) 看见 https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1648 为此。