Skip to content

Commit

Permalink
fix: 스웨거 서버 URL 불일치로 인한 CORS 이슈 픽스 (#30)
Browse files Browse the repository at this point in the history
* fix: 환경 변수에 맞게 스웨거 서버 설정

* fix: 서버 ip 바인딩 에러 픽스
  • Loading branch information
LeeHanEum authored Feb 18, 2025
1 parent aab25ac commit 033f323
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 10 deletions.
43 changes: 35 additions & 8 deletions src/main/java/depromeet/onepiece/common/config/SwaggerConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,57 @@
import io.swagger.v3.oas.models.security.SecurityScheme.In;
import io.swagger.v3.oas.models.security.SecurityScheme.Type;
import io.swagger.v3.oas.models.servers.Server;
import jakarta.annotation.PostConstruct;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

@Configuration
@RequiredArgsConstructor
public class SwaggerConfig {
private static final String SERVER_NAME = "One-Piece"; // 프로젝트명
private static final String API_TITLE = "원피스 서버 API 문서";
private static final String API_DESCRIPTION = "원피스 서버 API 문서입니다.";
private static final String SERVER_NAME = "Critix-server"; // 프로젝트명
private static final String API_TITLE = "Critix 서버 API 문서";
private static final String API_DESCRIPTION = "Critix 서버 API 문서입니다.";
private static final String GITHUB_URL = "https://github.com/depromeet/16th-team1-BE";
private final Environment environment;

@Value("${springdoc.server-url}")
private String serverUrl;

private final Map<String, String> PROFILE_SERVER_URL_MAP = new HashMap<>();

@PostConstruct
public void init() {
PROFILE_SERVER_URL_MAP.put("local", "http://localhost:8080");
PROFILE_SERVER_URL_MAP.put("dev", "http://" + serverUrl + ":8080");
}

@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.servers(
List.of(
new Server().url("http://localhost:8080").description("로컬 서버"),
new Server().url("https://api.dev.onepiece.com").description("개발 서버"),
new Server().url("https://api.prod.onepiece.com").description("운영 서버")))
.servers(initializeServers())
.addSecurityItem(securityRequirement())
.components(authSetting())
.info(swaggerInfo());
}

private List<Server> initializeServers() {
return PROFILE_SERVER_URL_MAP.entrySet().stream()
.filter(entry -> environment.matchesProfiles(entry.getKey()))
.map(entry -> newOpenApiServer(entry.getValue(), SERVER_NAME + " " + entry.getKey()))
.collect(Collectors.toList());
}

private Server newOpenApiServer(String url, String description) {
return new Server().url(url).description(description);
}

private Components authSetting() {
return new Components()
.addSecuritySchemes(
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/application-dev.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
spring:
data:
mongodb:
uri: ${MONGODB_URL}
uri: ${MONGODB_URL}
2 changes: 1 addition & 1 deletion src/main/resources/application-local.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
spring:
data:
mongodb:
uri: mongodb://localhost/onepiece
uri: mongodb://localhost/onepiece
1 change: 1 addition & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ spring:
springdoc:
default-consumes-media-type: application/json
default-produces-media-type: application/json
server-url: ${SERVER_URL:localhost}
swagger-ui:
operations-sorter: alpha
tags-sorter: alpha
Expand Down

0 comments on commit 033f323

Please sign in to comment.