# apigateway-service
spring:
application:
name: apigateway-service
cloud:
gateway:
routes:
- id: user-service
uri: lb://USER-SERVICE # 이 이름은 유레카 서버에 등록된 이름을 지정해줘야한다.
predicates:
- Path=/user-service/**
실제로 이렇게 바꾸고 실행해보면 8000/user-serivce/health_check 는 404 에러가 발생한다.
왜 그런것일까?
@JsonInclude(JsonInclude.Include.NON_NULL)
@GetMapping("/users")
public ResponseEntity<List<ResponseUser>> getUsers() {
Iterable<UserEntity> userList = userService.getUserByAll();
List<ResponseUser> result = new ArrayList<>();
userList.forEach(v -> {
result.add(new ModelMapper().map(v,ResponseUser.class));
});
return ResponseEntity.status(HttpStatus.OK).body(result);
}
user-service 와 yml 파일은 상당히 비슷하다.
@Data
@Entity
@Table(name = "catalog")
public class CatalogEntity implements Serializable { // 직렬화?
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false , length = 120 , unique = true)
private String productId;
@Column(nullable = false)
private String productName;
@Column(nullable = false)
private Integer stock;
@Column(nullable = false)
private Integer unitPrice;
@Column(nullable = false , updatable = false ,insertable = false)
@ColumnDefault(value = "CURRENT_TIMESTAMP") // h2 DB 에서 현재 날짜 및 시간을 가져오기 위한 함수를 호출하는 것
private LocalDateTime createdAt;
}
user-service 와 비슷한 로직이기 때문에 구현하는데 큰 어려움이 없었다.
# apigateway-service
- id: catalog-service
uri: lb://CATALOG-SERVICE # 이 이름은 유레카 서버에 등록된 이름을 지정해줘야한다.
predicates:
- Path=/catalog-service/**
order-service 도 마찬가지로 지금까지 만들었던 service 와 큰 차이점이 없다.
3개의 서비스를 모두 구현하고 유레카 서버 , apigateway , 3개 서비스 다 기동을 시켰다.
이제 사용자의 인증 기능을 추가해보자.