首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSwag For ServiceStack

NSwag For ServiceStack
EN

Stack Overflow用户
提问于 2022-08-11 21:17:46
回答 1查看 41关注 0票数 1

我想使用NSwag为基于ServiceStack(SS)的应用程序生成OpenApi v3 Spec。对于SS,契约在DTO类型类中定义,而在另一个类中实现使其完全解耦。

代码语言:javascript
复制
[Route("/hello", "GET", Summary = @"Default hello service.", Notes = "Longer description for hello services")]
[Route("/hello/{Name}", "GET", Summary = @"Additional hello service", Notes="Longer description for hello services")]
public class Hello : IReturn<HelloResponse>
{
    [ApiMember(Name = "Name", Description = "Name Description",
        ParameterType = "path", DataType = "string", IsRequired = true)]
    [ApiAllowableValues("Name", typeof(string))]
    public string Name { get; set; }
}

public class HelloResponse
{
    public string Result { get; set; }
}

我需要为上面的代码生成Spec文件。我尝试将类Hello的类型传递给JsonSchemaGenerator (通过遵循TypesToOpenApiCommand代码),它确实生成了specfile,但只包含组件部分。

代码语言:javascript
复制
"{\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Swagger specification\",\"version\":\"1.0.0\"},\"servers\":[{\"url\":\"http:///\"}],\"components\":{\"schemas\":{\"Hello\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"Name\":{\"type\":\"string\",\"nullable\":true}}},\"HelloResponse\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"Result\":{\"type\":\"string\",\"nullable\":true}}}}}}"

pathsparameters等其他部分没有填写。下面是我用来生成规范文件的代码,

代码语言:javascript
复制
var modelAssemblies = LoadFromAssemblies
            .Where(assembly => assembly.FullName != null && assembly.FullName.Contains(".ServiceModel"));

        var types = modelAssemblies.SelectMany(a => a.GetTypes());

        var document = CreateDocument();

        var generatorSettings = new JsonSchemaGeneratorSettings {SchemaType = SchemaType.OpenApi3};
        var generator = new JsonSchemaGenerator(generatorSettings);
        var schemaResolver = new OpenApiSchemaResolver(document, generatorSettings);

        foreach (var type in types)
        {
            generator.Generate(type, schemaResolver);
        }
        var json = document.ToJson();
        var yaml = document.ToYaml();
      
        return document;

我该如何填写这些部分?我能不能得到一些关于如何推进我的需求的设计思想?

EN

回答 1

Stack Overflow用户

发布于 2022-08-12 03:47:52

有关访问ServiceStack的HostContext.Metadata以填充Open规范的示例,请检查ServiceStack的OpenApiServices.cs

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73326974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档