【问题标题】:Guide to use Restlet Swagger extension for GAE为 GAE 使用 Restlet Swagger 扩展的指南
【发布时间】:2015-03-28 15:43:50
【问题描述】:

我尝试做类似的方法:

public Restlet createInboundRoot() {
        Router apiRouter = createApiRouter();
        attachSwaggerSpecificationRestlet(apiRouter, "/api-docs");
        return apiRouter;
}

/api-docs 被访问时,Restlet 会抛出错误 404,这可能是什么问题。我们的想法是,当我们访问 /stuff 等资源时,我们拥有的 apiRouter 完全在这种状态下工作。

此代码中可能缺少什么?或者在为 GAE 使用 Restlet Swagger 扩展时是否有任何具体的注意事项需要考虑?

【问题讨论】:

    标签: java google-app-engine restlet swagger swagger-ui


    【解决方案1】:

    我测试了您的用例,我可以使用以下 Maven 配置 (restlet-version = 2.3.1)AE 开发服务器使 Swagger 扩展工作:

    <dependencies>
        <dependency>
            <groupId>org.restlet.gae</groupId>
            <artifactId>org.restlet</artifactId>
            <version>${restlet-version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.restlet.gae</groupId>
            <artifactId>org.restlet.ext.servlet</artifactId>
            <version>${restlet-version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.restlet.gae</groupId>
            <artifactId>org.restlet.ext.swagger</artifactId>
            <version>${restlet-version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.raml</groupId>
                    <artifactId>raml-parser</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    
        <dependency>
            <groupId>org.restlet.jse</groupId>
            <artifactId>org.restlet.ext.jetty</artifactId>
            <version>${restlet-version}</version>
        </dependency>
    </dependencies>
    

    您会注意到我必须在 ext.swagger 中排除 RAML 解析器。

    这是我的 Restlet 应用程序的代码:

    public class RestletApplication extends SwaggerApplication {
        @Override
        public Restlet createInboundRoot() {
            Router router = new Router(getContext());
    
            router.attach("/ping", MyServerResource.class);
            attachSwaggerSpecificationRestlet(router, "/docs");
    
            return router;
        }
    }
    

    如果对您有帮助,我可以在 Github 存储库中提供我的测试项目。

    希望对你有帮助

    【讨论】:

    • “org.restlet.ext.jetty”有必要吗?
    • 不抱歉。我添加它是为了能够在 servlet 容器和 GAE 模式下进行测试,以确保问题不仅仅与 GAE 有关。我刚刚做了一个没有扩展名ext.jetty 的测试,它仍然有效...
    • 您在 gae 开发服务器中也有此错误?您的项目中是否有其他依赖项(xstream,...)?谢谢!
    • 您使用哪个版本的 GAE?
    • 我使用的是 GAE 1.9.18 版,我检查了日志并看到更多错误:pastekit.com/k5okRN 是的,为什么在依赖项中使用了 XStream?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2011-07-01
    相关资源
    最近更新 更多