1. 从web.xml 说起
CXFServlet org.apache.cxf.transport.servlet.CXFServlet 1 CXFServlet /*
如果这样配置,所有的请求都走CXF(意思是作为一种资源进行请求) ,就无法访问 swagger UI ,所以不能配置成/*
应该如下配置:
JAX-RS Simple Service JAX-RS Simple Service contextConfigLocation WEB-INF/beans.xml org.springframework.web.context.ContextLoaderListener org.springframework.web.context.request.RequestContextListener CXFServlet org.apache.cxf.transport.servlet.CXFServlet 1 CXFServlet /api/*
这样做{协议}{host}{port}{项目}{资源}
补充welcome files:
The welcome files mechanism allows you to specify a list of files that the web container will use for appending to a request for a URL (called a valid partial request) that is not mapped to a web component.
例如:访问 http://localhost:8080/cxf-rs/
则会自动访问webapp 下的 index.XXX
2. swagger UI
You can use the swagger-ui code AS-IS! (原样)
把`dist` folder 下的文件copy 到 webapp下
或者(如果觉得乱)copy到webapp下的指定文件夹下 例如:webapp/swagger
maven 的 webapp 最终生成war包后,不存在webapp ,项目目录即是webapp
一般来看如下:
出于安全考虑,非静态资源应该放在WEB-INF 里面。
如果想要实现以上效果,需要:
①配置welcome file 并将`dist` 中 index.html 的资源相对路径(src or href)修改为 swagger/..........
②配置welcome list
swagger/index.html
然后访问 http://localhost:8080/cxf-rs/
又出现了 swagger ui 页面
如果想要修改为 index.jsp 需要执行以下操作:
①新建一个jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>Swagger UI JSP
②将welcome list 修改为 swagger/index.jsp
3. web service 与 web project
被CXF 拦截的 url 是作为RESTful 资源访问,一般返回JSON
非CXF拦截的url是访问webapp 资源,页面跳转
这两种访问必须分清楚。
4.swagger 配置
spring 方式
重要属性:
resourcePackage :JAX-RS 的资源包
host:访问文档地址
basePath :所有的资源url pattern 再追加,例如:某个java类中的资源@Path("/user") ,则这个资源最终是 api/user
其他属性:
title:这组api标题
contact:联系方式
前置:
第一个是接收url请求( swagger.json / swagger.yaml )
第二个是将 swagger object 打印输出 ,交由swagger ui 展示