개발공작소
article thumbnail
728x90

 

 

 

 

이번에 프로젝트에 Swagger-ui를 적용하였다. 관련 링크는 아래 참고

 

[Spring] Spring 프로젝트에 Swagger-ui 설치 및 적용하는 방법 ( feat. 전자정부프레임워크 )

 

[Spring] Spring 프로젝트에 Swagger-ui 설치 및 적용하는 방법 ( feat. 전자정부프레임워크 )

이번에 전자정부프레임워크에 Swagger-ui를 적용하면서 정리해보려 한다. 구글링 해보니 전자정부프레임워크에 Swagger-ui를 적용하는 글들이 많이 없는 거 같다. Spring 프로젝트에 Swagger 설치하는 방

bongra.tistory.com

 

그런데 막상 실행하니 다음과 같은 문제가 발생하였다.

 

문제발생

 

 

URL을 통해 스웨거를 확인하려니 다음과 같은 팝업이 뜨며 접속이 되지 않는 것이었다.

 

Unable to infer base url. 

This is common when using dynamic servlet registration or when the API is behind an API Gateway. 

The base url is the root of where all the swagger resources are served. 

For e.g. if the api is available at http://example.org/api/v2/api-docs then 

the base url is http://example.org/api/. Please enter the location manually:

 

 

문제파악

 

우선 문제를 파악하기 위해서 개발자도구에서 네트워크 상태를 확인해보았다.

 

 

보니까. 뭔가 html, css, js등을 잘 가져온다. 근데 맨 아래에 404가 뜬다..

구글링을 해보니, Spring Security에서 불특정 도메인의 access를 차단한다는 글을 보고

스프링 시큐리티에서 막는건가? 라는 생각이 들었다.

 

근데 문제는 우리 프로젝트는 스프링 시큐리티가 적용되지 않았기 때문에 논외였다..

그래서 스프링 시큐리티만 줄창 보다가 결국 옆팀의 친구에게 도움을 구했다.

 

 

문제해결

 

옆팀의 친구와 같이 보던 중, 결론은 localhost:5049/sjmp/swagger-ui.html이라는 도메인이

차단 당한 것 같다고 이야기가 모아졌고. 한시간 정도 같이 보다가 문제원인을 찾았다.

 

바로 web.xml에서 <url-pattern>을 정의하는데 여기서 .do만 접근되도록 설정이 되어 있었기 때문이다.

그래서 아래와 같이 수정해주었다.

 

변경전

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

 

변경후

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>/swagger-resources/configuration/ui</url-pattern>
    <url-pattern>/swagger-resources/configuration/security</url-pattern>
    <url-pattern>/swagger-resources</url-pattern>
    <url-pattern>/v2/api-docs</url-pattern>
</servlet-mapping>

 

이렇게 변경을 하고 나니 정상적으로 접근이 된다.

 

만약 본인이 Spring Security를 사용하는 프로젝트면 우선 그 부분을 보면 될 것 같다..

스웨거 도메인에 접근 될 수 있도록 permit만 해주면 된다. 끝

 

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!