本篇内容主要讲解“dubbo的DubboSwaggerService有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“dubbo的DubboSwaggerService有什么作用”吧!
本文主要研究一下dubbo的DubboSwaggerService
dubbo-2.7.2/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerService.java
@Path("dubbo")
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Produces({MediaType.APPLICATION_JSON + "; " + "charset=UTF-8", MediaType.TEXT_XML + "; " + "charset=UTF-8"})
public interface DubboSwaggerService {
@GET
@Path("swagger")
public Response getListingJson(@Context Application app, @Context ServletConfig sc,
@Context HttpHeaders headers, @Context UriInfo uriInfo) throws JsonProcessingException;
}
DubboSwaggerService定义了getListingJson方法
dubbo-2.7.2/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerApiListingResource.java
@Service
public class DubboSwaggerApiListingResource extends BaseApiListingResource implements DubboSwaggerService {
@Context
ServletContext context;
@Override
public Response getListingJson(Application app, ServletConfig sc,
HttpHeaders headers, UriInfo uriInfo) throws JsonProcessingException {
Response response = getListingJsonResponse(app, context, sc, headers, uriInfo);
response.getHeaders().add("Access-Control-Allow-Origin", "*");
response.getHeaders().add("Access-Control-Allow-Headers", "x-requested-with, ssi-token");
response.getHeaders().add("Access-Control-Max-Age", "3600");
response.getHeaders().add("Access-Control-Allow-Methods","GET,POST,PUT,DELETE,OPTIONS");
return response;
}
}
DubboSwaggerApiListingResource继承了swagger-jaxrs的BaseApiListingResource,同时实现了DubboSwaggerService接口;其实现的getListingJson方法首先调用父类的getListingJsonResponse获取response,然后往header里头添加了跨域设置
dubbo-2.7.2/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerApiListingResourceTest.java
public class DubboSwaggerApiListingResourceTest {
private Application app;
private ServletConfig sc;
@Test
public void test() throws Exception {
DubboSwaggerApiListingResource resource = new DubboSwaggerApiListingResource();
app = mock(Application.class);
sc = mock(ServletConfig.class);
Set<Class<?>> sets = new HashSet<Class<?>>();
sets.add(SwaggerService.class);
when(sc.getServletContext()).thenReturn(mock(ServletContext.class));
when(app.getClasses()).thenReturn(sets);
Response response = resource.getListingJson(app, sc,
null, new ResteasyUriInfo(new URI("http://rest.test")));
Assertions.assertNotNull(response);
Swagger swagger = (Swagger)response.getEntity();
Assertions.assertEquals("SwaggerService",swagger.getTags().get(0).getName());
Assertions.assertEquals("/demoService/hello",swagger.getPaths().keySet().toArray()[0].toString());
}
}
这里验证resource.getListingJson返回的entity的swagger的path
DubboSwaggerService定义了getListingJson方法;DubboSwaggerApiListingResource继承了swagger-jaxrs的BaseApiListingResource,同时实现了DubboSwaggerService接口;其实现的getListingJson方法首先调用父类的getListingJsonResponse获取response,然后往header里头添加了跨域设置
到此,相信大家对“dubbo的DubboSwaggerService有什么作用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/go4it/blog/3070561