5.1 KiB
5.1 KiB
MVC设置
- @Controller:修饰class,用来创建处理http请求的对象
- @RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Controller就不需要再配置@ResponseBody,默认返回json格式。
- @RequestMapping:配置url映射
- value 请求路径 例如:@RequestMapping(value="/a/b"),则该方法对应的路径即为/a/b
- 在请求中可以以Ant通配符的方式配置路径,例如:@RequestMapping(value="/*/b") 表示a/b、c/b等各个请求均可以访问到该方法,而@RequestMapping(value="/**/b")则表示1/2/b,3/4/b都可以访问到该方法,单个*号表示任意字符通配符,两个星号代表任意路径通配符
- @PathVariable("id") 配置rest请求中的可变路径参数
- @ModelAttribute 配置参数对象,前端可通过传递对象中的属性值来填充该对象
- @RequestParam 配置参数,对应名值对的形式
- @RequestBody 配置请求参数,该数据一个请求只有一个,且请求类型不能为get类型
Swagger2配置
由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳。 随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象。 为了解决上面这样的问题,本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。
简单来说,swagger就是用来自动生成Spring MVC文档的工具,接口开发完毕后,无需手动再修改接口文档,直接让客户端/前端人员查看swagger生成的文档即可。
- 首先在pom.xml中导入swagger2的依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
- 构建swagger的配置类
/**
* swagger的配置文件
* */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${baseUrl}")
private String baseUrl;
@Bean
public Docket createRestRequestApi(){
return new Docket(DocumentationType.SWAGGER_2)
// 配置ApiInfo,级当前应用的基本信息
.apiInfo(getAppInfo())
// 生成DocketBuilder
.select()
// 指定api类生成的包名,swagger会自动扫描指定包下的所有类,生成说明文档
.apis(RequestHandlerSelectors.basePackage("com.xiaoxiao.springboot2.controller"))
// 指定实现了RestController接口的类,生成说明文档
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
// 路径过滤规则,多数情况下不需要过滤
.paths(PathSelectors.any())
.build();
}
private ApiInfo getAppInfo(){
return new ApiInfoBuilder()
.title("api文档")
.description("小小的api文档说明")
.contact(new Contact("xiaoxiao", null, "xiaoyan159@163.com"))
.version("V0.1")
.termsOfServiceUrl(baseUrl)
.build();
}
}
注意:上面Docket的apis方法只有一个会生效,因此如果需要扫描不同包的controller的类及方法,可使用withClassAnnotation方式
此刻直接访问localhost:8080/swagger-ui.html,即可看到自动生成的说明文档,但是这些说明文档是自动生成的,可读性不高,可通过在controller上增加注解的方式提高文档可读性
@ApiImplicitParams(
@ApiImplicitParam(name = "user", dataType = "User", allowEmptyValue = false, required = true)
)
@ApiOperation(value = "打印snapSwitch配置信息", notes = "注意:")
- 访问静态资源(图片、音频等文件)
springboot中访问静态资源,是按照如下顺序寻找的
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
- /
如果需要自定义静态资源位置,可以在application.properties中增加配置
- spring.resources.static-locations=classpath:/
- spring.mvc.static-path-pattern=/**
-
关于跨域
解决跨域问题,springboot中可以通过两种方式:
- 在请求上添加注解@CrossOrigin(value ="http://localhost:8081")
- 通过下面的代码
@Configuration public class WebMvcConfig implements WebMvcConfigurer{ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("http://localhost:8081").allowedMethods("*").allowedHeaders("*"); } }