我已经使用Nancy.Swagger包和MetadataModule为我的API构建Swagger UI(根据此链接:https://github.com/yahehe/Nancy.Swagger/wiki/Nancy.Swagger-for-Nancy-v2。
我获得了UI,但是问题是我无法为对象的属性添加示例值,该属性作为参数传递给主体。
例如,我看到此输出:
这里,我想有一个真实的示例值,而不是单词“ string”。但是我不知道如何以这种方式添加示例值,我将不胜感激。
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
。我认为这是最易读的方法。
这种方法存在两个问题,但尚未找到解决方案。一个是,Example对象似乎不尊重您用于Json序列化的任何设置。另外,我一直无法使它与“模型”视图同时工作,但是无论如何,在我看来,“模型”视图始终几乎毫无用处。如果我发现这些问题中的任何一个,我将进行更新。 :)