1.Swagger配置(基于java配置方式)
@Configuration
@EnableSwagger2
public class SwaggerConfig {
/*swagger会帮助我们生成接口文档
* 1.配置生成的文档信息
* 2.配置生成规则
* */
/**
* Docket封装接口文档信息
*/
@Bean
public Docket getDocket(){
//指定文档风格
Docket docket = new Docket(DocumentationType.SWAGGER_2);
ApiInfoBuilder apiInfoBuilder = new ApiInfoBuilder();
apiInfoBuilder.title("商城后端接口说明")
.description("描述了后端接口规范。。。")
.version("v2.0.1")
.contact(new Contact("LZB","www.lzb.com","1875981861@qq.com"));
ApiInfo apiInfo = apiInfoBuilder.build();
//指定生成文档的封面信息:文档标题、版本、作者
docket.apiInfo(apiInfo)
.select()
.apis(RequestHandlerSelectors.basePackage("com.lzb.bemall.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
}
-
测试:
- 启动Springboot应用,访问http://localhost:8080/swagger-ui.html
1.1 Swagger注解说明
swagger提供了一套注解,可以对每个接口进行详细的说明
- @Api 类注解,在控制器类添加此注解,可以对控制器类进行功能的说明
- @ApiOperation方法注解,在方法上添加此注解,可以对其方法进行功能说明
- @ApiImplicitParams,对所需的参数进行详细的说明
示例:
@Controller
@ResponseBody
@RequestMapping("/user")
@Api(value = "提供用户登录和注册的接口",tags = "用户管理")
public class UserController {
@Resource
private UserService userService;
@ApiOperation("用户登录接口")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "String",name = "username",value ="用户登录账号",required = true),
@ApiImplicitParam(paramType = "String",name = "password",value ="用户登录密码",required = false,defaultValue = "123456")
})
@RequestMapping(value = "/login",method = RequestMethod.GET)
public ResultVo login(@RequestParam("username") String name, @RequestParam(value = "password",defaultValue = "123456") String pwd){
return userService.checkLogin(name,pwd);
}
}
4.@ApiModel和*@ApiModelProperty*当接口参数和返回值为对象类型时,在实体类中添加注解说明
示例:
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "用户信息",description = "买家信息")
public class User {
@ApiModelProperty(required = false,dataType = "Integer")
private Integer userId;
@ApiModelProperty(required = true,dataType = "String",value = "用户账号")
private String userName;
@ApiModelProperty(required = true,dataType = "String",value = "用户密码")
private String userPassword;
@ApiModelProperty(required = true,dataType = "String",value = "用户真实姓名")
private String userRealName;
@ApiModelProperty(required = true,dataType = "String",value = "用户头像路径")
private String userImg;
}
5.@ApiIgnore接口方法注解,添加此注解的方法将不会生成到接口文档中去
1.2 Swagger-ui 插件
- 导入依赖
<!-- https://mvnrepository.com/artifact/com.github.xiaoymin/swagger-bootstrap-ui -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
2 Restful
前后端分离开发的项目中,前后端之间是接口进行请求和响应,后端向前端提供请求时就要向外暴露一个URL;
URL的设计不能随意的,需要遵从一定的设计规范-------Restful
Restful是一种web Api的标准,也就是一种URL设计风格/规范。是使用请求方式来区分操作,而不是用路径。
每一个URL请求路径代表服务器上的唯一资源
传统的URL设计:
http://localhost:8080/goods/delete?goodsId=1 商品1
http://localhost:8080/goods/delete?goodsId=2 商品2
RESTFUL设计:
http://localhost:8080/goods/delete/1 商品1
http://localhost:8080/goods/delete/2 商品2
@RequestMapping("/delete/{gid}")
public ResultVo deleteGoods(@PathVariable("gid")int goodsId){
System.out.println("--------"+goodsId);
return new ResultVo(1000,"delete success",null);
- 使用不同的请求方式表示不同的操作
SpringMVc对Restful风格提供了很好的支持,在定义一个借口URL时,可以直接通过
@RequestMapping(value = "/{id}",method = RequestMethod.DELETE) 形式指定请求方式,也可以使用特定请求方式
的注解来设定URL
@PostMapping("/add") 添加 @DeleteMapping("/{id}") 删除 @PutMapping("/{id}") 修改 @GetMapping("/{id}") 查询
HTTP常用的请求方式
- post 添加
- get 查询
- delete 删除
- put 修改
- option(预检)
根据ID删除一个商品
//http://localhost:8080/goods/1 [delete]
@RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
public ResultVo deleteGood(@PathVariable("id")int goodsId) {
System.out.println("--------" + goodsId);
return new ResultVo(1000, "delete success", null);
}
根据ID查询一个商品
//http://localhost:8080/goods/1 [get]
@RequestMapping(value = "/{id}",method = RequestMethod.GET)
public ResultVo getGood(@PathVariable("id")int goodsId) {
System.out.println("--------" + goodsId);
return new ResultVo(1000, "delete success", null);
}
-
接口响应的资源的表现形式采用json
- 在每个接口添加*@ResponseBody*注解将返回的对象格式为json
- 或者直接在控制器类使用*@RestController*注解声明控制器
-
前端通过无状态的HTTP协议与后端接口进行交互
\