1. 程式人生 > >springboot中使用swagger2構建restful介面文件

springboot中使用swagger2構建restful介面文件

最近幾年網際網路專案、移動應用越來越多,不同於之前的企業內部應用,該類專案通常就是好幾個應用互相呼叫,我們一般會使用word或者excel來記錄介面的相應描述,但是這樣會有一些問題,比如更新困難,不易管理。

Swagger 是一款RESTFUL介面的文件線上自動生成+功能測試功能軟體,它既能解決幫我們自動生成介面文件,並且還能線上除錯。

記錄下在springboot中swagger的使用

1、新增依賴

	        <dependency>
		    <groupId>io.springfox</groupId>
		    <artifactId>springfox-swagger2</artifactId>
		    <version>2.6.1</version>
		</dependency>
		<dependency>
		    <groupId>io.springfox</groupId>
		    <artifactId>springfox-swagger-ui</artifactId>
		    <version>2.6.1</version>
		</dependency>

2、編寫配置類

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.demo.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        Contact contact=new Contact("meepoguan","http://blog.csdn.net/u011890101","郵箱地址");
        return new ApiInfoBuilder()
                .title("介面文件")
                .description("測試介面")
                .termsOfServiceUrl("測試介面")
                .contact(contact)
                .version("1.0")
                .build();
    }
}

3、編寫實體類

public class User implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 3221700752972709820L;

	private int id;
	
	private String name;
	
	private int age;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public User(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	
	
}

4、編寫restful介面

@RestController
@RequestMapping("users")
public class UserController {

	@ApiOperation(value="獲取使用者列表")
	@GetMapping
	public String list() {
		//TODO 查詢操作
		return "";
	}
	
	@ApiOperation(value="新增使用者",notes="填寫物件建立使用者")
	@ApiImplicitParam(name="user",value="實體user",required=true,dataType="User")
	@PostMapping
	public String saveUser(@RequestBody User user) {
		//TODO 新增操作
		return "";
	}
	
	@ApiOperation(value="更新使用者",notes="根據id指定物件,並根據傳來的物件進行更新")
	@ApiImplicitParams({
		@ApiImplicitParam(name="id",value="使用者id",required=true,dataType="String"),
		@ApiImplicitParam(name="user",value="使用者實體物件",required=true,dataType="User")
	})
	@PutMapping(value="{id}")
	public String updateuser(@PathVariable String id) {
		//TODO 更新使用者
		return "";
	}
	
	@ApiOperation(value="刪除使用者")
	@ApiImplicitParam(name="id",value="使用者id",required=true,dataType="String")
	@DeleteMapping(value="id")
	public String deleteUser(@PathVariable String id) {
		//TODO 刪除使用者
		return "";
	}
}

執行專案,輸入http://localhost:8080/swagger-ui.html


如果能看到該頁面,則證明整合成功了。