我使用 Nancy.Swagger 包和 MetadataModule 为我的 API 构建 Swagger UI(根据此链接:https://github.com/yahehe/Nancy.Swagger/wiki/Nancy.Swagger-for-Nancy-v2)。
我得到了 UI,但问题是我无法为对象的属性添加示例值,该对象作为正文中的参数传递。
例如,我看到以下输出:
在这里,我想要一个真实的示例值,而不是“字符串”一词。但我不知道如何在这种方法中添加示例值,如果有任何帮助,我将不胜感激。
来自 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/