API Gateway 를 통해 서버 호출하기 - DevCamp2Flame/FlameTalk_Server GitHub Wiki
1. 설정
build.gradle
ext {
set('springCloudVersion', "2021.0.0")
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
- Service Discovery 인 netflix eureka 를 사용합니다.
Application.java
@EnableDiscoveryClient
eureka client 임을 알리는 어노테이션 추가 eureka에 service 등록
application.yml
server:
port: 8082
spring:
application:
name: membership # 유레카에 등록할 서비스의 논리 이름 membership or file
profiles:
active:
default
cloud:
config:
enabled: true
eureka:
instance:
hostname: membership # file
prefer-ip-address: true
client:
register-with-eureka: true # 유레카에 서비스 등록
fetch-registry: true # 유레카 서비스 위치
service-url:
defaultZone: http://localhost:8761/eureka/ # 레지스트리 사본을 로컬로 가져오기
auth 서버 환경변수
MYSQL_PORT=3306;MYSQL_USER=flame;MYSQL_PASSWORD=flame123!@#;JWT_SECRET=@dkssudgktpdy-durlsms*vmffpdla$xladlqslek!wkf(qnxkremflqslekdyd^rkflz;REDIS_PORT=6379;APP_NAME=flametalk1.gmail.com;APP_PASSWORD=cnrdmzaaebhkqhgh
혹시 몰라 준비해봤습니다. 그대로 복붙하셔서 intellij 환경 변수 설정에 넣으시면 됩니다.
mysql 관련 값은 본인 컴퓨터 환경에 맞춰서 변경 가능합니다. JWT_SECRET 값도 변경 가능하나 변경될 경우 이전 JWT_SECRET 값으로 생성한 토큰에 대해서는 인식할 수 없습니다. 토큰을 생성한 적 없다면 변경해도 괜찮습니다.
2. 사용방법: Controller 변경
@RequiredArgsConstructor
@RestController
@RequestMapping("")
public class TestController {
@GetMapping("/test")
public String method(@RequestHeader("USER-ID") String userId, @RequestHeader("DEVICE-ID") String deviceId) {
System.out.println("hi. this is method");
System.out.println("userId : " + userId);
System.out.println("deviceId : " + deviceId);
return "test success";
}
}
- userId, deviceId 에 한해서, 필요하다면, RequestHeader 로 받아 사용하시면 됩니다.
3. 실행
eureka → 테스트할 서버(auth, membership, file) → gateway 순서로 실행시켜주세요.
테스트할 서버를 키고, gateway 를 실행시켜야 gateway 에서 서버를 spring.application.name 으로 인식할 수 있습니다. 서버호출시 게이트웨이 포트번호 8080으로 호출해주세요.