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.재현 되 지 않 은 bugFailed to execute 'fetch' on 'Window': Failed to parse URL from http://localhost/8765undefindFailed to parse URL from http://localhost/8765undefind
프로젝트 swagger 를 계속 다시 시작 하 는데 문제 가 없습니다.
나중에 제 가 방법 에 있 는 api 설명 을 수정 하고 다시 시작 하면 됩 니 다.swagger 에서 api 충돌 일 수도 있 습 니 다.관건 은 이것 이 힌트 가 없어 서 어 지 럽 습 니 다.누가 이 문 제 를 재현 하 는 것 을 찾 으 면 말 해 보 세 요.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SpringBoot 통합 Swagger 2 의 예제@Api 주 해 는 현재 Controller 의 기능 을 표시 할 수 있 습 니 다 @Api ImplicitParam 주 해 는 매개 변 수 를 설명 하 는 데 사용 되 며,매개 변수의 중국어 의 미 를 설정 할 수...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.