• 周五. 4月 26th, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

swagger

admin

11月 28, 2021

API文檔的一種玩法
嵌入到java code中(YAPI是非嵌入式的)
項目啓動后,通過生成的link去訪問api,可以查看api使用方法、mock api等

Base on: spring boot

安裝
Add dependence in pom.xml

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>

Add config in application.properties:

#apispecProperties
hkbn.api.title=SiteMORuleAPI
hkbn.api.description=SiteMORuleAPI
hkbn.api.version=1.0
hkbn.switch=true

Add in weblogic.xml(主要是com.google):

<container-descriptor>
<prefer-application-packages>
<package-name>org.slf4j</package-name>
<package-name>org.springframework.*</package-name>
<package-name>com.fasterxml.jackson.*</package-name>
<package-name>com.google.*</package-name>
</prefer-application-packages>
</container-descriptor>

Add class:

package hk.com.hkbn.itrbss;

import org.springframework.beans.factory.annotation.Value;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class ApiSpecConfig {

    @Value("${hkbn.api.title}")
    private String title;

    @Value("${hkbn.api.description}")
    private String description;

    @Value("${hkbn.api.version}")
    private String version;

    @Value("${hkbn.switch}")
    private boolean apiSpecSwitch;


    @Bean
    public Docket api() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2);
        if (apiSpecSwitch) {
            docket.enable(true);
        } else {
            docket.enable(false);
        }


        docket.apiInfo(metaData()).select().
                apis(RequestHandlerSelectors.basePackage("hk.com.hkbn.itrbss.controller")).
                paths(PathSelectors.any()).build();
        return docket;
    }

    private ApiInfo metaData() {
        return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl("")
                .version(version).build();
    }
}

Add api spec info in Controller class:

@ApiOperation(value="queryBMOadvancenoticebyaddresscode.",response=List.class)
@RequestMapping(value="/chk-bmo-notice",method=RequestMethod.GET)
publicStringgetBmoAdvanceNotice(
@RequestHeader("addr_ref_value")StringaddrRefValue,
@RequestHeader("order_type")StringorderType){
MoRuleVictimDtomoRule=newMoRuleVictimDto();
moRule.setAddrRefValue(addrRefValue);
returnmoRuleService.getBmoAdvanceNotice(moRule,orderType);
}

使用:https://ip/project_name/swagger-ui.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注