【问题标题】:Swashbuckle - use custom JSON schema for operationSwashbuckle - 使用自定义 JSON 模式进行操作
【发布时间】:2020-06-30 13:23:08
【问题描述】:

我有一个特定的案例 - 我正在构建一个可以获取动态请求有效负载的 Azure Function 端点,在执行该函数后,它会获取请求正文,并根据存储在存储中某处的正确 JSON 架构对其进行验证。 架构是根据 URL 参数选择的。

这是函数的sn-p:

[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PublishResult))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(PublishResult))]
[FunctionName("Publish")]
public async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post", Route = "publish/{eventType}")] HttpRequest req,
    [Blob("storage/{eventType}.json", FileAccess.Read)] Stream validationSchema,
    string eventType, ExecutionContext ctx)
{
    JObject jResult;
    (isValid, error, jResult) = await ValidateRequestObject(req, eventType, validationSchema);
    if (!isValid)
    {
        _log.LogWarning("Invalid object. {Id}, {ObjectError}", id, error);
        return new BadRequestObjectResult(new PublishResult(id, error));
    }

    // function logic
}

所以我的问题是我想配置 Swashbuckle,以便它根据我拥有的这些 JSON 模式生成不同的请求正文。我不知道如何告诉 Swashbuckle 为此使用我自己的自定义 JSON 模式。

我知道它可能应该通过实现 IOperationFilter 来完成,但我无法真正做到。 我发现很少有类似的案例,但不是我正在寻找的。​​p>

我们将不胜感激!

【问题讨论】:

    标签: c# azure function swagger swashbuckle


    【解决方案1】:

    您可能想看看community project (nuget),它可以让您在函数中添加不同的 Swagger 端点,您可以利用这些端点通过选择文档来创建自定义的 swagger 响应(您需要创建 swagger/以 json 或 yaml 格式打开 api sepc 文档)。注意:Function 没有像常规的 asp.net 核心网络应用程序那样的官方扩展。这是一个社区驱动的项目。

    【讨论】:

    • 您好,谢谢您的回答!我已经在使用这个了,我的问题是如何配置它,以便它使用给 JSONs 而不是函数注释......
    • 看起来你在 github 项目中提出了一个问题github.com/vitalybibikov/AzureExtensions.Swashbuckle/issues/31 :)。让我们等待答案,但同时在我看来,您可以指定您的招摇文档 swashBuckleClient.CreateSwaggerDocumentResponse(req, ""); github.com/vitalybibikov/…
    • 看来 squashbucket 无法正常工作。让我们等待来自github的答案,找到后不要忘记发布答案!
    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    相关资源
    最近更新 更多