swagger core 和 swagger ui 如何关联【窥探】
几个片段:

package io.swagger.jaxrs.listing; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.*; @Path("/swagger.{type:json|yaml}")
public class ApiListingResource extends BaseApiListingResource { @Context
ServletContext context; @GET
@Produces({MediaType.APPLICATION_JSON, "application/yaml"})
@ApiOperation(value = "The swagger definition in either JSON or YAML", hidden = true)
public Response getListing(
@Context Application app,
@Context ServletConfig sc,
@Context HttpHeaders headers,
@Context UriInfo uriInfo,
@PathParam("type") String type) {
if (StringUtils.isNotBlank(type) && type.trim().equalsIgnoreCase("yaml")) {
return getListingYamlResponse(app, context, sc, headers, uriInfo);
} else {
return getListingJsonResponse(app, context, sc, headers, uriInfo);
}
} }

package io.swagger.jaxrs.listing; import io.swagger.models.Swagger;
import io.swagger.util.Json;
import io.swagger.util.Yaml;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type; @Provider
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, "application/yaml"})
public class SwaggerSerializers implements MessageBodyWriter<Swagger> {
static boolean prettyPrint = false;
Logger LOGGER = LoggerFactory.getLogger(SwaggerSerializers.class); public static void setPrettyPrint(boolean shouldPrettyPrint) {
SwaggerSerializers.prettyPrint = shouldPrettyPrint;
} @Override
public boolean isWriteable(Class type, Type genericType, Annotation[] annotations,
MediaType mediaType) {
return Swagger.class.isAssignableFrom(type);
} @Override
public long getSize(Swagger data, Class type, Type genericType, Annotation[] annotations, MediaType mediaType) {
return -1;
} @Override
public void writeTo(Swagger data,
Class<?> type,
Type genericType,
Annotation[] annotations,
MediaType mediaType,
MultivaluedMap<String, Object> headers,
OutputStream out) throws IOException {
if (mediaType.isCompatible(MediaType.APPLICATION_JSON_TYPE)) {
if (prettyPrint) {
out.write(Json.pretty().writeValueAsString(data).getBytes("utf-8"));
} else {
out.write(Json.mapper().writeValueAsString(data).getBytes("utf-8"));
}
} else if (mediaType.toString().startsWith("application/yaml")) {
headers.remove("Content-Type");
headers.add("Content-Type", "application/yaml");
out.write(Yaml.mapper().writeValueAsString(data).getBytes("utf-8"));
} else if (mediaType.isCompatible(MediaType.APPLICATION_XML_TYPE)) {
headers.remove("Content-Type");
headers.add("Content-Type", "application/json");
out.write(Json.mapper().writeValueAsString(data).getBytes("utf-8"));
}
}
}
<!-- this scans the classes for resources -->
<bean id="swaggerConfig" class="io.swagger.jaxrs.config.BeanConfig">
<property name="resourcePackage" value="io.swagger.sample.resource"/>
<property name="version" value="1.0.0"/>
<property name="host" value="localhost:8080/swagger-java-cxf-sample"/>
<property name="basePath" value="/api"/>
<property name="title" value="Swagger Petstore"/>
<property name="description" value="This is a app."/>
<property name="contact" value="apiteam@swagger.io"/>
<property name="license" value="Apache 2.0"/>
<property name="licenseUrl" value="http://www.apache.org/licenses/LICENSE-2.0.html"/>
<!-- <property name="filterClass" value="ApiAuthorizationFilterImpl"/> -->
<property name="scan" value="true"/>
</bean>
basePath 是定位到项目的前提下,访问谁
var url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "http://localhost:8080/swagger-java-cxf-sample/api/swagger.json";
}
访问谁,访问哪个路径
!IMPORTANT
这个是基于jax-rs 项目整合的
swagger core 和 swagger ui 如何关联【窥探】的更多相关文章
- .net core的Swagger接口文档使用教程(一):Swashbuckle
现在的开发大部分都是前后端分离的模式了,后端提供接口,前端调用接口.后端提供了接口,需要对接口进行测试,之前都是使用浏览器开发者工具,或者写单元测试,再或者直接使用Postman,但是现在这些都已经o ...
- Asp.net Core的Swagger接口根据模块、版本分组
近期一直在学习Asp.net Core,微软的文档太难看,都是英文翻译过来的,很不友好,感谢这个博客,从壹开始前后端分离[ .NET Core2.0 +Vue2.0 ],让我入门了,刚学到这个Swag ...
- .NET Core和Swagger 生成 Api 文档
测试/生产环境的BUG 这里更新一下在本地调试正常,在INT/PROD上抛错,错误信息为: */**/*.xml(Swagger json file) 文件找不到,在startup 里builder ...
- swagger.core的使用方法
Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务,那么如何在abp中使用呢,已经有大牛为我们实现了一个swagger.core的组件而作为菜鸟 ...
- .NET Core和Swagger 生成 Api 文档转
阅读目录 1.引用 2.打开startup.cs文件 3.设置XML注释 4.运行结果 5.主要问题的解决办法 6.可以自定义UI 前言 最近写了好多Web api, 老大说太乱了,要整理一下,使用S ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- .net core的Swagger接口文档使用教程(二):NSwag
上一篇介绍了Swashbuckle ,地址:.net core的Swagger接口文档使用教程(一):Swashbuckle 讲的东西还挺多,怎奈微软还推荐了一个NSwag,那就继续写吧! 但是和Sw ...
- .NET Core使用swagger进行API接口文档管理
一.问题背景 随着技术的发展,现在的开发模式已经更多的转向了前后端分离的模式,在前后端开发的过程中,联系的方式也变成了API接口,但是目前项目中对于API的管理很多时候还是通过手工编写文档,每次的需求 ...
- Asp.Net Core配置Swagger
本文主要参考:Using Swagger with ASP.net Core 1.创建WebApi项目 本文使用ASP.Net Core Web API项目模板演示Swagger到使用,首先创建Web ...
随机推荐
- windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)
前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...
- python之内置函数:map ,filter ,reduce总结
map函数: #处理序列中的每个元素,得到的结果是一个'列表',该列表元素个数及位置与原来一样 filter函数: #遍历序列中的每个元素,判断每个元素得到一个布尔值,如果是true,则留下来 peo ...
- hibernate注解主键生成策略
Id生成策略: @GeneratedValue,JPA通用策略生成器 . JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO. TABLE:使用一个特定的数据库表格来 ...
- 类定义,创建/销毁OC对象
类定义 1 OC类分为2个文件,一个是.h文件,一个是.m文件: 2 .h文件存放类.函数声明: 3 .m文件类的具体实现: 4 类声明使用关键字@interface.@end来声明: 5 类实现使用 ...
- Delphi 动态数组合并
TIntArray = array of Integer; function MergeArray(const ArrayA, ArrayB: TIntArray): TIntArray; var i ...
- 【Java】JVM(一)、Java内存区域
一.程序计数器(Program Counter Register) 当前执行字节码的行号指示器,可以通过修改该计数器的值来实现字节码指令(分支,循环,跳转等), 每个线程都都有一个程序计数器, 属于线 ...
- Windows10系统一键结束所有运行程序
当电脑及其卡顿的时候,想打开任务管理器关掉所有运行的程序的时候,也会变得及其困难.因此之前你如果有犀利的小程序设置,这都不会是问题. 1)空白处右键-新建-快捷方式 2)将下列代码复制到下列框中(注意 ...
- 对.NET中导出数据到EXCEL的几种方法探讨
最近在做一个报表系统的时候,需要把DATASET中的数据导到EXCEL当中,于是在网上找了一遍,发现了好几种方法,本来以为应该差不多,但后来经过一一试用后,发现在性能上真的差别很大,现在就介绍一下,同 ...
- swift 约束 - SnapKit 适配iPhoneX 安全区 和苹果自带的VFL ,auto layout 安全区适配
这里tableview 是从最顶上的安全区适配的, nextBtn是最下边从安全区设置的,如果是在中间的view还是原来的写法,看2 1.安全区适配适用于Vc里面, 如果是自定义的view或封装的vi ...
- IBM MQ 与spring的整合
文件名:applicationContext-biz-mq.xml 新浪博客把里面的代码全部转换成HTML了,所以无法粘贴 可以查看CSDN里面的:http://blog.csdn.net/xiazo ...