欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: MSSQL123 Swagger是一款RESTful接口的文档在线自动生成模板和页面,利用僻静台以及语言无关。今朝在许多公司以及实际项目中大量用到。可以把Swagger领略为接口文档,靠山写好的代码可以直接生成前端接口文档页面,接口挪用这可以通过这个页面发送接口请求,举办接口测试或挪用。利用起来很是利便。利用了Swagger之后,就不需要再去维护其他的接口文档了,节减了许多的本钱。本文利用的项目案例上传至  https://github.com/chenyufeng1991/StartSpringMVC.git 。本文将会来先容如何搭建一个完整的Swagger框架。Swagger的官方地点为:http://swagger.io/。一个简答的Swagger页面如下图所示: (1)Swagger在Github上的地点为:https://github.com/swagger-api/swagger-ui  。各人可以下载该项目,然后把dist目次下的所有内容都插手到本身项目标webapp目次下。各人也可以下载我的StartSpringMVC项目,把webapp目次下的css、images、lib、index.html和swagger-ui.js导入到本身的项目中即可。个中显示的前端页面就是index.html. (2)然后需要在项目中新加一个类,作为swagger的设置文件,我在StartSpringMVC中的类是“CustomJavaPluginConfig”,该类的实现如下:
@Configuration
@EnableWebMvc
@EnableSwagger
public class CustomJavaPluginConfig extends WebMvcConfigurerAdapter {
 
    private SpringSwaggerConfig springSwaggerConfig;
 
    @Autowired
    public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
        this.springSwaggerConfig = springSwaggerConfig;
    }
 
    @Bean
    public SwaggerSpringMvcPlugin customImplementation() {
        return new SwaggerSpringMvcPlugin(this.springSwaggerConfig)
                .apiInfo(apiInfo()).includePatterns(".*")
                .useDefaultResponseMessages(false)
                // .pathProvider(new GtPaths())
                .apiVersion("0.1").swaggerGroup("user");
 
    }
 
    private ApiInfo apiInfo() {
        ApiInfo apiInfo = new ApiInfo("我的RESTful接口平台",
                "提供具体的靠山所有Restful接口", "http://blog.csdn.net/chenyufeng1991",
                "yufengcode@gmail.com", "乞力马扎罗的雪-博客", "http://blog.csdn.net/chenyufeng1991");
        return apiInfo;
    }
 
    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
 
    class GtPaths extends SwaggerPathProvider {
 
        @Override
        protected String applicationPath() {
            return "/restapi";
        }
 
        @Override
        protected String getDocumentationPath() {
            return "/restapi";
        }
    }
}
(3)对付一个实体模子,昆山软件公司
,需要利用swagger去标识。如下面的Student模子,个中的@ApiModel、@ApiModelProperty都是属于Swagger的注解。假如需要在接口中返回模子工具,则需要利用以下的方法去注解。
@ApiModel(value = "学生工具", description = "student")
public class Student {

    @ApiModelProperty(value = "姓名", required = true)
    String name;
    @ApiModelProperty(value = "年数", required = true)
    String age;

    public Student(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}
(4)在举办接口设计的Controller中,同样需要利用Swagger注解。个中下面的@Api、@ApiOperaction、@Apiparam都是Swagger注解,个中@Api暗示这是一个需要Swagger暗示的类;@ApiOperaction暗示这是一个需要Swagger修饰的接口,个中表白了请求方法、说明等信息。@ApiParam暗示该接口输入的参数,昆山软件开发,昆山软件开发,value是参数的值说明,required暗示该参数是否是必需的。
@Api(value = "football", description = "足球", produces = MediaType.APPLICATION_JSON_VALUE)
@Controller
@RequestMapping("football")
public class FootballController {
 
    @ApiOperation(value = "用户登录注册", notes = "用户", httpMethod = "GET", produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    @RequestMapping(value = "user", method = RequestMethod.GET)
    public List<Student> foo(
            @ApiParam(value = "用户名", required = true) @RequestParam String name,
            @ApiParam(value = "年数", required = true) @RequestParam String age
    ) {
        //获取请求的参数,需要和链接中的参数名一致
        //推荐利用HttpServletRequest的方法来获取参数,GET、POST的参数都可以吸收
        List<Student> list = new ArrayList<Student>();
 
        Student student = new Student(name, age);
        Student student1 = new Student(name + name, age + age);
        list.add(student);
        list.add(student1);
        return list;
    }
 
    @ApiOperation(value = "用户登录注册2", notes = "用户2", httpMethod = "POST", produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    @RequestMapping(value = "customer/login", method = RequestMethod.POST)
    public String foo2(
            @ApiParam(value = "用户名", required = true) @RequestParam String name
    ) {
        return name;
    }
}
(5)重要的是,要在pom.xml中插手swagger的依赖:
<!-- Swagger-mvc -->
<dependency>
    <groupId>com.mangofactory</groupId>
    <artifactId>swagger-springmvc</artifactId>
    <version>1.0.2</version>
</dependency>
(6)完成后的运行界面如下图所示。各人可以按照本身的实际需求自界说页面元素。