c# - 如何在 Nancy.Swagger 包构建的 Swagger-UI 中添加参数示例值?

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

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

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

例如,我看到以下输出:

enter image description here

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

来自 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>())

最佳答案

我知道自从您打开此内容以来已经过去了很多年,但我想无论如何我都会分享。

首先你需要一个模型,如下所示:

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。我认为这是最具可读性的方法。

这种方法存在一些问题,我还没有找到解决方案。一是示例对象似乎不尊重您用于 Json 序列化的任何设置。另外,我无法使其与模型 View 同时工作,但无论如何,模型 View 在我眼中总是毫无用处。如果我解决了这些问题,我会更新此内容。 :)

关于c# - 如何在 Nancy.Swagger 包构建的 Swagger-UI 中添加参数示例值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49241341/

相关文章:

c# - 当前上下文中不存在名称 'Bind'

c# - 执行object.add 或repository.add 哪个更好?

c# - Entity Framework - 多列左外连接

c++ - 编译器在构造函数中计算出的成员偏移不正确

java - OAuth 2.0 - 第一步细节,有人可以澄清吗?

c# - 如何在 NSwag 生成的 C# 代码中包含自定义语句/指令?

swagger - 如何让 Swagger 在 header 和请求 URL 中发送 api_key?

c# - 如何合并/组合两个 SqlDataReader 对象

visual-studio - 无法从 Visual Studio 访问在 VSTS 符号服务器中发布的符号

angular - 未知的编译器选项 'noStrictGenericChecks'