MicroProfile OpenAPI上的Swagger UI

MicroProfile OpenApi为我们提供了一种使用OpenApi 3描述我们JAX-RS API的标准化方法。如果您以前使用过swagger-jaxrs和swagger-annotations ,由于OpenApi是基于Swagger构建的,因此您会感到非常熟悉。

2015年11月5日,SmartBear与3Scale,Apigee,Capital One,Google,IBM,Intuit,Microsoft,PayPal和Restlet共同宣布成立Open API Initiative,这是Linux基金会下的一个开源项目。 作为OAI形成的一部分,SmartBear向Linux基金会捐赠了Swagger规范,这意味着OpenAPI规范在语义上与以前称为Swagger 2.0规范的规范相同 – www.openapis.org/faq

快速概述

应用

首先,在扩展javax.ws.rs.core.Application的类中,添加有关API的标头信息:

@ApplicationPath("/api")@OpenAPIDefinition(info = @Info(title = "Example application", version = "1.0.0", contact = @Contact(name = "Phillip Kruger", email = "phillip.kruger@phillip-kruger.com",url = "http://www.phillip-kruger.com")),servers = {@Server(url = "/example",description = "localhost")})public class ApplicationConfig extends Application {}

( 在此处查看完整的示例)

服务

然后在您的服务中,添加描述您的服务的注释:

  • @Tag
  • @Operation
  • @APIResponse
  • 等等

例:

@RequestScoped@Path("/config")@Tag(name = "Config Retrieval service", description = "Get the value for a certain config")public class ConfigRetrievalService {@Injectprivate Config config;@GET @Path("/{key}")@Operation(description = "Get the value for this key")@APIResponses({@APIResponse(responseCode = "200", description = "Successful, returning the value")})@Produces(MediaType.TEXT_PLAIN)public Response getConfigValue(@PathParam("key") String key) {String value = config.getValue(key, String.class);log.log(Level.INFO, "{0} = {1}", new Object[]{key, value});return Response.ok(value).build();}}

(见完整的例子在这里 ,另一个(富勒)例如这里 )

获取openapi yaml

现在,如果您运行应用程序,则可以转到/openapi以获取yaml:

openapi: 3.0.0info:title: Example applicationcontact:name: Phillip Krugerurl: http://www.phillip-kruger.comemail: phillip.kruger@phillip-kruger.comversion: 1.0.0servers:- url: /exampledescription: localhosttags:- name: Simulate some exeptiondescription: Create some exception- name: Config Retrieval servicedescription: Get the value for a certain configpaths:/api/config/{key}:get:tags:- Config Retrieval servicedescription: Get the value for this keyoperationId: getConfigValueparameters:- name: keyin: pathrequired: truestyle: simpleschema:type: stringresponses:200:description: Successful, returning the value/api/exception:get:tags:- Simulate some exeptiondescription: Throw an exeptionoperationId: doSomethingresponses:412:description: You made a mistakecomponents: {}

添加Swagger UI

上面是MicroProfile OpenAPI的快速概述。 在此处了解更多信息:

  • 规格
  • Github

最新扬鞭UI适用于OpenAPI的,并且可以手动将其添加到您的项目(见这个伟大的职位由Hayri奇切克 ),或者你可以使用这个 ,它会自动将其添加有用的库:

在您的pom.xml

<dependency><groupId>com.github.phillip-kruger.microprofile-extensions</groupId><artifactId>openapi-ext</artifactId><version>1.0.9</version></dependency>

这将通过webjars插入 Swagger UI,并从您可以使用MicroProfile Config API配置的模板生成index.html

仅添加上述内容便已经为您提供了默认的UI,例如:

http:// localhost:8080 / example / api / openapi-ui /

招摇UI

个性化您的用户界面

使用Config API,您可以个性化UI。 这是您可以使用的配置键:

  • openapi-ui.copyrightBy –在页脚中为版权添加名称。 默认为无。
  • openapi-ui.copyrightYear –添加版权年份。 默认为当前年份。
  • openapi-ui.title –在窗口中添加标题。 默认为“ MicroProfile – Open API”。
  • openapi-ui.serverInfo –在服务器上添加信息。 默认为系统服务器信息。
  • openapi-ui.contextRoot –添加上下文根。 默认为当前值。
  • openapi-ui.swaggerUiTheme –使用swagger-ui-themes中的主题。 默认为“ flattop”。
  • openapi-ui.swaggerHeaderVisibility –显示/隐藏swagger徽标标题。 默认为“可见”。
  • openapi-ui.exploreFormVisibility –显示/隐藏浏览表单。 默认为“隐藏”。
  • openapi-ui.serverVisibility –显示/隐藏服务器选择。 默认为“隐藏”。
  • openapi-ui.createdWithVisibility –显示/隐藏创建的页脚。 默认为“可见”。

示例:将其添加到META-INF/microprofile.properties

openapi-ui.copyrightBy=Phillip Krugeropenapi-ui.title=My awesome servicesopenapi-ui.swaggerHeaderVisibility=hiddenopenapi-ui.serverVisibility=visible

会改变用户界面:

招摇UI

主题

默认的UI使用swagger-ui-themes中的flattop主题,但是您也可以更改它:

openapi-ui.swaggerUiTheme=monokai

招摇UI

商标

最后,您可以通过在/src/main/resources/包含一个名为openapi.png的文件来将徽标更改为公司徽标:

招摇UI

蜂鸟

对于不具有MicroProfile的应用程序服务器,请参阅Apiee

翻译自: https://www.javacodegeeks.com/2018/08/swagger-ui-microprofile-openapi.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 跟踪内存,用strace跟踪malloc内存分配

strace介绍strace是一个非常有用的命令&#xff0c;它用于记录和跟踪程序运行期间收到的信号和调用的系统调用。strace的简单使用ubuntu64:~$ strace cat /dev/nullexecve("/bin/cat", ["cat", "/dev/null"], [/* 32 vars */]) 0brk(NULL) 0x1…

归一化、标准化和正则化

归一化 Normalization 归一化一般是将数据映射到指定的范围&#xff0c;用于去除不同维度数据的量纲以及量纲单位。 常见的映射范围有 [0, 1] 和 [-1, 1] &#xff0c;最常见的归一化方法就是 Min-Max 归一化&#xff1a; 举个例子&#xff0c;我们判断一个人的身体状况是否健…

slf4j绑定器_用于ADFLogger的SLF4J绑定–缺少的部分

slf4j绑定器由于最好的原因&#xff0c;在我的日常工作中&#xff0c;我希望为ADF Logger Oracle ADF提供一个SLF4J适配器。 毫不奇怪&#xff0c;slf4j没有用于ADFLogger的适配器&#xff0c;但是由于ADFLogger只是Java Util Logging的轻巧包装&#xff0c;因此花了一个多小时…

核心网

在我们正式讲解之前&#xff0c;我想通过这张网络简图帮助大家认识一下全网的网络架构&#xff0c;通过对全网架构的了解&#xff0c;将方便您对后面每一块网络细节的理解。 这张图分为左右两部分&#xff0c;右边为无线侧网络架构&#xff0c;左边为固定侧网络架构。 无线侧…

linux服务器防端口扫描,linux下防止syn***,端口扫描和死亡之ping

http://downloads.sourceforge.net ... les-v0.0.3-3.tar.gz下载以后安装&#xff1a;tar zxvf arptables-v0.0.3-3.tar.gzcd arptables-v0.0.3-3/makemake install生成的命令是/usr/local/sbin/arptables、/usr/local/sbin/arptables-save、/usr/local /sbin/arptables-restor…

JDK 11:轻松取出单文件Java源代码程序

JDK 11 Early Access Builds包含与JEP 330相关的预览功能&#xff08;“启动单个文件源代码程序”&#xff09;。 我之前在“ Shebang即将来到Java&#xff1f; ”和“ 为JDK 11提议的JEP 329和JEP 330 ”&#xff0c;由于JDK 11 Early Access Builds&#xff0c;在这篇文章中…

多普勒效应、多普勒效应、网关、路由器

多普勒效应 &#xff08;Doppler effect&#xff09; 多普勒效应是波源和观察者有相对运动时&#xff0c;观察者接受到波的频率与波源发出的频率并不相同的现象。远方急驶过来的火车鸣笛声变得尖细&#xff08;即频率变高&#xff0c;波长变短&#xff09;&#xff0c;而离我们…

瑞利、莱斯与Nakagami-m信道衰落模型

一、信道的定义与调制信道的数学模型 1.信道的定义与分类 信道&#xff08;Channel&#xff09;是指以传输媒质为基础的信号通道。根据新到的定义&#xff0c;如果信道仅是指信号的传输媒质&#xff0c;这种信道称为狭义信道&#xff1b;如果这种信道不仅是传输媒质&#xff…

linux用if语句编程序,Shell 脚本基础 - 使用 if 语句进行条件检测

Bourne Shell 的 if 语句和大部分编程语言一样 - 检测条件是否真实&#xff0c;如果条件为真&#xff0c;shell 会执行这个 if 语句指定的代码块&#xff0c;如果条件为假&#xff0c;shell 就会跳过 if 代码块&#xff0c;继续执行之后的代码。if 语句的语法&#xff1a;if[判…

java运行时间间隔_Java:安排作业按时间间隔运行

java运行时间间隔最近&#xff0c;我花了一些时间围绕Neo4j版本之间的滚动升级构建了一组测试&#xff0c;作为其中的一部分&#xff0c;我想记录升级过程中集群的状态。 测试的主线程会等待升级完成&#xff0c;因此我想每隔几秒钟登录另一个线程。 Alistair将我指向Schedule…

卫星导航定位 -- 坐标系统与时间系统

原文https://blog.csdn.net/f2157120/article/details/81210843 1 协议天球坐标系 以地球质心为坐标原点&#xff0c;以地球自转的轴为z轴 2 协议地球坐标系 3 WGS-84坐标系 4 CGS2000坐标系统 5 直角坐标系与大地坐标系转换 6 大地坐标系转换 7 时间系统 8 GNSS时间系统 …

linux 命令行 解密,解密Linux终端命令 学好Linux

如果你要学习Linux操作系统&#xff0c;你一定知道Linux系统越来越受到电脑用户的欢迎&#xff0c;学习linux&#xff0c;你可能想了解Linux终端命令&#xff0c;这里将介绍Linux终端命令的知识&#xff0c;在这里拿出来和大家分享一下。一、文件目录类1.建立目录&#xff1a;m…

用Jackson编写大型JSON文件

有时您需要将大量数据导出到JSON到文件中。 可能是“将所有数据导出到JSON”&#xff0c;或者是GDPR“可移植性权利”&#xff0c;您实际上需要这样做。 与任何大型数据集一样&#xff0c;您不能只将其全部容纳在内存中并将其写入文件。 它需要一段时间&#xff0c;它会从数据…

博弈论学科整体概览

一、博弈论的概念 博弈论又被称为对策论&#xff08;Game Theory&#xff09;既是现代数学的一个新分支&#xff0c;也是运筹学的一个重要学科。博弈论主要研究公式化了的激励结构间的相互作用。是研究具有斗争或竞争性质现象的数学理论和方法。博弈论考虑游戏中的个体的预测行…

linux 进程组id 错乱,【Linux】终端,进程组,作业,会话及作业控制

终端概念在UNIX系统中,用用户通过终端登录系统后得到一一个Shell进程,这个终端成为Shell进程的控制终端 (Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况 下(没有重定向)…

纳什均衡

纳什均衡&#xff08;或者纳什平衡&#xff09;&#xff0c;Nash equilibrium ,又称为非合作博弈均衡&#xff0c;是博弈论的一个重要策略组合&#xff0c;以约翰纳什命名。 定义 经济学定义 数学定义 纳什均衡的定义&#xff1a;在博弈G﹛S1,…,Sn&#xff1a;u1,…&#x…

linux 添加本地源,linux 添加本地yum源

1、yum repolist2、https://opsx.alibaba.com/mirror&#xff0c;首先下在该镜像站点中的yum&#xff0c;这里选择epel源epel-release-latest-7.noarch.rpm3、rpm -ivh epel-release-latest-7.noarch.rpm # 安装源4、此时看到epel源已经安装好了&#xff0c;如果我们不适用bas…

稳定婚姻问题:Gale–Shapley算法

&#xff08;一&#xff09;问题的引出 在组合数学、经济学、计算机科学中&#xff0c;稳定婚姻问题&#xff08;英语&#xff1a;stable marriage problem&#xff0c;简称SMP&#xff09;又称为稳定配对问题&#xff08;stable matching problem&#xff09;&#xff0c;是指…

Linux程序设计实验项目六,《linux程序设计》实验教学大纲

《linux程序设计》实验教学大纲课程名称&#xff1a;Linux程序设计课程编号&#xff1a;408412420408436407适用专业&#xff1a;计算机科学与技术网络工程软件工程总 学 分&#xff1a;3总 学 时&#xff1a;48其中实验学时16一、实验课程性质、目的与任务《Linux程序设计》课…

宣布EAXY:使Java中的XML更容易

Java中的XML库是一个雷区。 操作和读取XML所需的代码量令人震惊&#xff0c;使用不同的库遇到类路径问题的风险很大&#xff0c;并且对名称空间的处理带来许多混乱和错误。 最糟糕的是&#xff0c;情况似乎并没有改善。 一位同事让我意识到JOOX库。 这是解决这些问题的一个很好…