티스토리 뷰

드디어 User-Service를 벗어나서 Catalogs 서비스를 개발할 예정입니다! 

와!!! Catalogs!! 

그럼 Catalogs의 API는 어떤 구조일까요? 

#Catalogs

기능 마이크로 서비스 URI(API Gateway) HTTP Method
상품 목록 조회 Catalogs MicroService /catalog-service/catalogs GET
사용자 별 상품 주문 Orders MicroService /order-service/{user_id}/orders POST
사용자 별 주문 내역 조회 Orders MicroService /order-service/{user_id}/orders GET

 

그럼 이제 실제로 프로젝트를 생성해줄게요.

 

그 뒤에 pom.xml을 조금 수정해줘야 합니다.

#pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.6</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>catalog-service</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>catalog-service</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
		<spring-cloud.version>2021.0.1</spring-cloud.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<version>1.3.176</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.modelmapper</groupId>
			<artifactId>modelmapper</artifactId>
			<version>2.3.8</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

H2 DB의 버젼과, Mapper를 추가해준 pom.xml 파일의 내용입니다. 

진행하다가 깨달은 것이 있는데, UserService와 다른점이 없습니다. 그래서 

이번 포스팅은 날먹을 위해서 완성된 프로젝트를 공유합니다.

catalog-service.7z
0.06MB

 UserService의 회원조회와 너무나도 유사합니다. 다만 Gateway에 Yml파일을 수정해주셔야하는데

API-Gateway Service

#application.yml

server:
   port: 8000

eureka:
   client:
      register-with-eureka: true
      fetch-registry: true
      service-url:
         defaultZone: http://localhost:8761/eureka

spring:
   application:
      name: apigateway-service
   cloud:
      gateway:
         default-filters:
            - name: GlobalFilter
              args:
                 baseMessage: Glabal Filter의 BaseMessage 에요!!
                 preLogger: true
                 postLogger : true
         routes:
            - id: user-service
              uri: lb://USER-SERVICE
              predicates:
                 - Path=/user-service/**
            - id: catalog-service
              uri: lb://CATALOG-SERVICE
              predicates:
                  - Path=/catalog-service/**

다음과 같이 route를 하나 추가해줍니다. 

테스트는 http://localhost:8000/catalog-service/catalogs 해당 URL로 하면 됩니다. 

다음과 같이 서버시작과 동시에 자동으로 입력되는 상품데이터들이 조회가 완료되면 성공입니다. 

이번 포스팅은 너무 성의없어서 죄송합니다. 

너무 졸려서... 다만 정말로 전에 진행했던 User-service와 너무나도 유사성이 높아서 

중복내용일까봐 앞으로 프로젝트 진행을 위해서 프로젝트 파일만 공유한다는 점! 알아주셨으면 좋겠네요 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함