상세 컨텐츠

본문 제목

SpringBoot MSA (10) - MicroService / UserService 기타 기능 추가

Spring/SpringBoot-MSA

by ChrisMare 2023. 10. 17. 15:20

본문

개별 사용자의 상세보기 기능 추가

 

API를 작성하기 전에

apigateway-service에서 라우트 uri 설정을 /user-service를 호출하여 진행되기 때문에

 

user-service 프로젝트 > controller > UserController.java

requestMapping으로 공통적으로 설정해준다.

@RequestMapping("/user-service")

 

상세보기 및 회원조회 추가

 

vo > ResponseUser.java 수정

package com.example.userservice.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.util.List;

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResponseUser {
    private String email;
    private String name;
    private String userId;

    private List<ResponseOrder> orders;
}

 

vo > ResponseOrder.java 추가

package com.example.userservice.vo;

import lombok.Data;

import java.util.Date;

@Data
public class ResponseOrder {

    private String productId;
    private Integer qty;
    private Integer unitPrice;
    private Integer totalPrice;
    private Date createAt;

    private String orderId;

}

 

service > UserService 인터페이스 아래 기능 추가

상세보기 및 회원조회

package com.example.userservice.service;

import com.example.userservice.dto.UserDto;
import com.example.userservice.repository.UserEntity;

import java.util.List;

public interface UserService {
    UserDto createUser(UserDto userDto);

    UserDto getUserByUserId(String userId);

    List<UserEntity> getUserByAll();
}

 

service > UserSeriveImpl 기능 구현

@Override
public UserDto getUserByUserId(String userId) {
    UserEntity userEntity = userRepository.findByUserId(userId);

    if(userEntity == null) throw new UsernameNotFoundException("User not found");
    
    UserDto userDto = new ModelMapper().map(userEntity, UserDto.class);

    List<ResponseOrder> orders = new ArrayList<>();
    userDto.setOrders(orders);
    
    return userDto;
}

@Override
public List<UserEntity> getUserByAll() {
    return userRepository.findAll();
}

 

controller > UserController.java > GET getUsers 추가

// 회원 전체 목록 조회
@GetMapping("/users")
public ResponseEntity<List<ResponseUser>> getUsers() {
    List<UserEntity> userList = userService.getUserByAll();

    List<ResponseUser> result = new ArrayList<>();
    userList.forEach(user -> {
        result.add(new ModelMapper().map(user, ResponseUser.class));
    });

    return ResponseEntity.status(HttpStatus.OK).body(result);
}

 

결과 보기

POST users로 user 생성 후 GET 확인 해보기

List에 담겨있는 user 정보를 확인할 수 있습니다.

 

회원 정보 조회

controller > UserController.java > GET getUser 추가

// 회원 정보 조회
@GetMapping("/users/{userId}")
public ResponseEntity<ResponseUser> getUser(@PathVariable("userId") String userId) {
    UserDto userDto = userService.getUserByUserId(userId);

    ResponseUser returnUser = new ModelMapper().map(userDto, ResponseUser.class);

    return ResponseEntity.status(HttpStatus.OK).body(returnUser);
}

결과확인!

 

다음 게시글에서는 카탈로그 목록를 조회할 수 있는 마이크로 서비스를 만들겠습니다.

 

관련글 더보기

댓글 영역