接口开始使用 Swagger2 生成文档,每个 Controller 都要配一堆注解生成文档,繁琐重复。就比如我写了如下的 Controller:
@Api(tags = "学生接口")
@RestController
@RequestMapping("web/v1/student")
public class StudentController {
@ApiOperation("根据编号获取学生信息")
@ApiImplicitParams(
@ApiImplicitParam(name = "stu_no", value = "学生编号"))
@GetMapping("getByNo")
public StudentVO getByNO(@RequestParam("stu_no") String stuNo) {
StudentVO stu = new StudentVO();
stu.setStuNo(stuNo);
stu.setName("张三");
return stu;
}
@ApiOperation("添加学生信息")
@ApiImplicitParams(
{
@ApiImplicitParam(name = "name", value = "学生名称", defaultValue = "张三"),
@ApiImplicitParam(name = "no", value = "学生编号", defaultValue = "std-10001", required = true)
}
)
@PostMapping("add")
public StudentVO addStudent(String name, String no) {
StudentVO s = new StudentVO();
s.setName(name);
s.setStuNo(no);
return s;
}
}
我觉得更简便的方式是通过注释生成文档,就像这样:
/**
* 学生接口
*/
@RestController
@RequestMapping("web/v1/student")
public class StudentController {
/**
* 根据编号获取学生信息
* @param stuNo 学生编号
*/
@GetMapping("getByNo")
public StudentVO getByNO(@RequestParam("stu_no") String stuNo) {
StudentVO stu = new StudentVO();
stu.setStuNo(stuNo);
stu.setName("张三");
return stu;
}
/**
* 添加学生信息
* @param name 学生名称|张三
* @param no 学生编号|required|std-10001
*/
@PostMapping("add")
public StudentVO addStudent(String name, String no) {
StudentVO s = new StudentVO();
s.setName(name);
s.setStuNo(no);
return s;
}
}
于是我写了个EasySwagger,只需加个@EnableEasySwagger
开启功能。原理也简单,通过反射修改DocumentationCache
类中的文档信息。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.