【问题标题】:How to add example values for parameters in Swagger-UI built by Nancy.Swagger package?如何在 Nancy.Swagger 包构建的 Swagger-UI 中为参数添加示例值?
【发布时间】:2019-10-31 06:45:26
【问题描述】:

我使用 Nancy.Swagger 包和 MetadataModule 为我的 API 构建了 Swagger UI(根据此链接:https://github.com/yahehe/Nancy.Swagger/wiki/Nancy.Swagger-for-Nancy-v2)。

我得到了 UI,但问题是我无法为对象的属性添加 示例值,它作为参数传递给 body。

例如,我看到了这个输出:

在这里,我想要一个真实的示例值,而不是“字符串”这个词。但我不知道如何在这种方法中添加示例值,如果有任何帮助,我将不胜感激。

来自 API 的片段和参数(PRequest 的对象):

Post("/", async (x, ctx) =>
{   
    PRequest PostRequestModel;
    try
    {
        postRequestModel = this.Bind<PRequest>();
    }

来自 MetaDataModule 的片段:

Describe["Post"] = desc => desc.AsSwagger(
            with => with.Operation(
                op => op.OperationId("Post")
                    .Tag("User")
                    .Summary("Post a new User")
                    .Description("This creates a new user.")
                    .BodyParameter(bp => bp.Description("A PRequest object").Name("PRequest").Schema<PRequest>())

【问题讨论】:

  • 你能显示你的 API 代码吗?
  • @Coding 我刚刚添加了一些 sn-ps。

标签: c# visual-studio-2017 swagger swagger-ui nancy


【解决方案1】:

我知道你打开它已经很久了,但我想我还是会分享。

首先你需要一个模型,像这样:

public class Model
{
    public string ExampleString { get; set; }
}

您需要创建此模型的一个实例,其中填充您想要的任何示例。

var exampleModel = new Model() { ExampleString = "foobar" }

然后你可以像这样将它添加到 BodyParameter 中:

.BodyParameter(para => para.Name("Example").Schema(
    new Schema() { Example = exampleModel }
).Build())

我刚刚创建了一个public static 类来保存我的所有示例对象,然后我将它们设置为Example = Examples.Example1。我认为这是最易读的方法。

这种方法存在一些问题,我还没有找到解决方案。一是 Example 对象似乎不尊重您用于 Json 序列化的任何设置。此外,我一直无法让它与模型视图同时工作,但无论如何,模型视图在我看来总是无用的。如果我发现任何这些问题,我会更新这个。 :)

【讨论】:

  • 很遗憾,我无法再测试此问题,但非常感谢您分享您的解决方案。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
相关资源
最近更新 更多