一步步完成Maven+SpringMVC+SpringFox+Swagger整合示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wxm994116/article/details/79130845

网上看到的比较全面的例子,欢迎点击以下蓝色链接进入

一步步完成Maven+SpringMVC+SpringFox+Swagger整合示例--点我进入

期间遇到的坑的处理:

1.配置已完成,但是进入不了界面,原因是springMVC配置了了登陆的拦截权限而导致,代码当中查看不出拦截了哪个请求,所以只需要打开谷歌浏览器,输入所需要的swagger-ui.html,然后按F12查看哪个url出现404错误,直接点击进去查看,加上自己拦截的权限(比如我的对是否登陆的token进行拦截),然后把这个url加入免登入的xml或者在springmvc的拦截代码中排除!

2.springfox swagger2的相关总结

a.如何让每个请求的url中加入一个固定要加的参数?(在配置swaggerCofig的请求头中直接添加所需要的参数即可,如下图中的token参数)参考链接(点击打开链接)链接2(点击打开链接

    @Bean
    public Docket buildDocket(){
    	  ParameterBuilder tokenPar = new ParameterBuilder();  
          List<springfox.documentation.service.Parameter> pars = new ArrayList<springfox.documentation.service.Parameter>();  
          tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("query").required(false).build();  
          pars.add(tokenPar.build());  
          return new Docket(DocumentationType.SWAGGER_2)  
              .select()  
              .apis(RequestHandlerSelectors.any())  
              .paths(PathSelectors.any())  
              .build()  
              .globalOperationParameters(pars)  
              .apiInfo(apiInfo());  
    }
b.常用的参数注解,请点击右边蓝色链接进入查看 。 点我打开链接

以下对几个项目中常用的注解进行简单说明

@Api() 
用于类;表示标识这个类是swagger的资源 
tags–表示说明 
value–也是说明,可以使用tags替代 
但是tags如果有多个值,会生成多个list

@Api(value="用户controller",tags={"用户操作接口"})
@RestController
public class UserController {

}
有些不能使用会导致无法显示中文,所以小编我就使用这个description了

@RestController
@Scope("prototype")
@Api(description = "用户信息管理")
public class UserController {
对于一些请求参数中携带的参数,但是在controller的方法中却没有写,可以使用swagger2的注解来写入参数,这个也便于一些接口无须写入参数,直接在这个api接口中直接写即可!如下图所示:(userCode以及password没有在controller中,却可以在api界面中显示,同时也可以在qing)
@RequestMapping(value = "/user/login", method = { RequestMethod.GET })
	@ApiOperation(value = "用户登录", notes = "用户登录操作", httpMethod = "GET")
	@ApiImplicitParams({
			@ApiImplicitParam(name = "userCode", value = "用户编码或者用户邮箱或者用户电话或者用户的erp编码", required = true, dataType = "String", paramType = "query"),
			@ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String", paramType = "query"),
			@ApiImplicitParam(name = "token", value = "访问令牌(无需填写)", required = false, dataType = "String", paramType = "query") })
	public String login(HttpServletRequest request, HttpServletResponse response) throws Exception {

以上是多个参数,也可以单个参数

@ApiImplicitParam(name = "phoneNum", value = "手机号码", required = false, dataType = "String", paramType = "path")
对于@ApiImplicitParam的参数说明

name–参数名字
value–参数说明 
dataType–数据类型 (String/int/json/Formdata(文件)/Long)
paramType–参数类型 (path(在url的路径中)/query/body等)
example–举例说明

c.如果程序中发现在本地可以访问,但是别的电脑不能访问或者到远程服务器上去不能访问的问题,应该是跨域问题,可以选择在web.xml中进行配置

<filter>
		<filter-name>SimpleCORSFilter</filter-name>
		<filter-class>com.huiju.srm.app.filter.sys.SimpleCORSFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>SimpleCORSFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
对应的类如下代码所示

package com.huiju.srm.app.filter.sys;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class SimpleCORSFilter implements Filter {
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) res;
    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE");
    response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type,x-csrf-token");
    response.setHeader("Content-type", "text/html;charset=UTF-8");
    System.out.println(response.getStatus());
    chain.doFilter(req, res);
  }
  public void init(FilterConfig filterConfig) {}
  public void destroy() {}
}















猜你喜欢

转载自blog.csdn.net/wxm994116/article/details/79130845