Swagger 2 맵 의 복잡 한 구조 가 해석 할 수 없 는 문 제 를 해결 합 니 다.

오늘 동료 가 swagger 2 로 개발 할 때 맵>로 돌아 가 는 방법 이 있 습 니 다.해석 할 수 없 는 오류 가 발생 했 습 니 다.
Pom.xml 에서 도입 한 swagger 버 전 은 다음 과 같 습 니 다.

<!--swagger start-->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.20</version>
        </dependency>
        <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>
        <!--swagger end-->
구체 적 인 원인:
swaggerconfig 는 맵 의 복잡 한 구 조 를 기본적으로 추가 하지 않 았 기 때문에 수 동 으로 추가 해 야 합 니 다.
단계:
1.swaggerconfig 클래스 를 찾 아 Docket 방법 에 mapRule 을 추가 하면 됩 니 다.
2.여기 서 rule 을 디자인 하 는 것 이 비교적 유연 합 니 다.저 는 제목 의 형식 에 따라 추가 하 겠 습 니 다.그 중에서 Model.class 는 사용자 정의 업무 유형 으로 자신의 것 으로 바 꾸 면 됩 니 다.

docket.alternateTypeRules(AlternateTypeRules.newMapRule(String.class, List.class));
docket.alternateTypeRules(AlternateTypeRules.newMapRule(List.class, Model.class));
구체 적 인 코드 는 다음 과 같다.

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build();
 
        docket.alternateTypeRules(AlternateTypeRules.newMapRule(String.class, List.class));
        docket.alternateTypeRules(AlternateTypeRules.newMapRule(List.class, Model.class));
        return docket;
    }
}
Swagger 사용 중 에 생 긴 구덩이
1.무한 요청
swagger 페이지 요청 에 오류 가 있 으 면 swagger 는 무한 한 접근 을 시도 합 니 다.나중에 항목 을 다시 시작 할 때 제어 층 은 로그 의 내용 을 무한 리 셋 합 니 다.
로 컬 처리 가 쉽 습 니 다.프로젝트 가 서버 에 배치 되면 10 분 동안 G 로그 파일 이 몇 개 생 길 수 있 습 니 다.
해결 방법:가장 간단 한 방법-오 류 를 요청 하 는 브 라 우 저 를 닫 습 니 다.
2.동명 이인 문제
@Api(같은 이름 의 문제)는 swagger 가 tags 의 이름 에 따라 대상 을 찾 기 때문에 같은 이름 의 대상 이 있 을 때 swagger 의 문서 에 문제 가 발생 합 니 다.
swagger 의 한 API 에서 이 API 에 속 하지 않 는 요청 이 발생 하면 이것 이 API 의 동명 문제 입 니 다.같은 API 이름 으로 바 꾸 는 것 을 찾 으 면 됩 니 다.
3.유형 상의 주해"/"의 문제
@ApiModel("/"사용 불가)

Errors
Hide
Resolver error at paths./v1-0/Configuration/add.post.parameters.1.schema.properties.listHotCarBrandIVO.items.$ref
Could not resolve reference because of:Could not resolve pointer:/definitions/인기 차/브랜드/IVO does not exist in document
4.맵 을 반환 형식 으로 사용 하여 오 류 를 보고 합 니 다.
Errors
Hide
Resolver error at definitions.Map«string,List«판매 차량 정보 OVO».additionalProperties.$ref
Could not resolve reference because of: Could not resolve pointer: /definitions/List does not exist in document
두 가지 해결 방안:swagger 버 전 번 호 를 업그레이드 합 니 다.이것 은 제 가 2.8.0 으로 잘못 보고 하면 잘못 보고 할 수 있 습 니 다.인터넷 에서 업그레이드 버 전 으로 해결 할 수 있다 고 했 습 니 다.이것 은 제 가 시도 하지 않 았 습 니 다.

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>
제 해결 방안 은 맵 을 대상 에 정의 하고 대상 을 대상 으로 프로 그래 밍 하 는 것 입 니 다.그리고 이렇게 문 서 를 생 성 할 때 주석 도 잘 표 시 됩 니 다.

5.swagger 버 전의 문제,2.8 이전 버 전 은 경로/{id}+@pathVarisble 에 있 습 니 다.
2.8 전에 swagger 가 제시 한 유형 이 body 라 니 제 이 슨 형식 으로 전달 해 야 하 는 것 이 이상 하 다.
버 전이 2.8 로 업 데 이 트 된 후 경로 뒤에 연 결 된 매개 변 수 는 swagger 가 제시 한 유형 이 뜻밖에도 param 일 수 있 습 니 다.
적당 한 업데이트 버 전이 좋 습 니 다.

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>
6.재현 되 지 않 은 bug
Failed to execute 'fetch' on 'Window': Failed to parse URL from http://localhost/8765undefindFailed to parse URL from http://localhost/8765undefind
프로젝트 swagger 를 계속 다시 시작 하 는데 문제 가 없습니다.
나중에 제 가 방법 에 있 는 api 설명 을 수정 하고 다시 시작 하면 됩 니 다.swagger 에서 api 충돌 일 수도 있 습 니 다.관건 은 이것 이 힌트 가 없어 서 어 지 럽 습 니 다.누가 이 문 제 를 재현 하 는 것 을 찾 으 면 말 해 보 세 요.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기