[내일배움캠프] 260419 TIL #11 CRUD Code Shadowing 3차(최종)

2026. 4. 19. 15:28·내일배움캠프/TIL

Today I Learned!

코드 쉐도잉 마지막 3차 과제를 진행했다. 1~2차 과제 관련 TIL은 아래 링크를 통해 확인할 수 있다.

 

1차 과제 TIL

 

 

[내일배움캠프] 260415 TIL #8 CRUD Code Shadowing

들어가며입문 프로젝트에 앞서, CRUD Code Shadowing 과제가 주어졌다. 오늘은 "따라 치기 과제"로, 작성되어 있는 코드를 보고 따라서 작성하면 되는 과제이다. 노션 페이지를 보고 단순히 따라쳐도

sxxlx.tistory.com

 

2차 과제 TIL

 

 

[내일배움캠프] 260417 TIL #10 CRUD Code Shadowing 2차

Today I Learned!지난 1차 과제에 이어 2차 과제를 진행했다. 1차 과제 관련 TIL 은 아래 링크를 통해 확인할 수 있다. [내일배움캠프] 260415 TIL #8 CRUD Code Shadowing들어가며입문 프로젝트에 앞서, CRUD Code Sh

sxxlx.tistory.com

 

작성한 코드는 아래 GitHub Repository에서 확인할 수 있다.

 

GitHub - seola12e/CRUD-Code-Shadowing: [내일배움캠프 단기심화 7기] CRUD Code Shadowing 과제 레포지토리

[내일배움캠프 단기심화 7기] CRUD Code Shadowing 과제 레포지토리. Contribute to seola12e/CRUD-Code-Shadowing development by creating an account on GitHub.

github.com

 

이번 3회차 최종에서는 OrderController 에 있었던 비즈니스로직을 OrderService 에서 처리하도록 역할을 분리시켰다.

 

 

1. 코드 작성

OrderController

더보기
// import 생략

@RestController
@RequestMapping("/api/orders")
@RequiredArgsConstructor
public class OrderController {

    private final OrderService orderService;

    @PostMapping
    public ResponseEntity<OrderResponse> createOrder(@Valid @RequestBody OrderRequest request) {
        OrderResponse response = orderService.createOrder(request);
        return ResponseEntity.created(URI.create("/api/orders/" + response.getOrderId())).body(response);
    }

    @GetMapping("/{id}")
    public ResponseEntity<OrderResponse> getOrder(@PathVariable Long id) {
        return ResponseEntity.ok(orderService.getOrder(id));
    }
}

 

OrderService

더보기
// import 생략

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class OrderService {

    private final OrderRepository orderRepository;
    private final ProductRepository productRepository;

    @Transactional
    public OrderResponse createOrder(@Valid OrderRequest request) {
        Product product = findProductById(request.getProductId());
        Order order = new Order(product);
        return new OrderResponse(orderRepository.save(order));
    }

    public OrderResponse getOrder(Long id) {
        return new OrderResponse(findOrderById(id));
    }

    private Order findOrderById(Long id) {
        return orderRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException(
                        "해당 주문이 존재하지 않습니다. id = " + id
                ));
    }

    private Product findProductById(Long id) {
        return productRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException(
                        "해당 상품이 존재하지 않습니다. id=" + id
                ));
    }
}

 

2. API 테스트

지금까지 진행해왔던 DB 안의 데이터들을 통해 마지막 테스트를 진행했다.

테스트 도구는 지난 번과 마찬가지로 Postman을 사용했다.

테스트 전 DB

 

a. 주문 생성 API 테스트

productId에 1을 body에 넣어서 요청을 보냈더니 201 Created 와 함께 정상적으로 주문이 잘 생성되었음을 확인할 수 있었다.

 

실패 테스트를 위해 존재하지 않는 상품 ID인 20번을 넣어서 테스트 해봤더니, 정상적으로 error 를 throw함을 확인할 수 있었다.

 

 

b. 주문 조회 API 테스트

데이터베이스상에서 Order Id 값이 3으로 되어 있으니 파라미터에 3을 넣고 GET 요청을 보냈더니 200 OK 상태코드와 함께 정상적으로 조회되었음을 확인할 수 있었다.

 

존재하지 않는 주문 아이디인 30번을 넣고 요청을 보냈더니 마찬가지로 error를 throw하는 것을 확인할 수 있었다.

 

'내일배움캠프 > TIL' 카테고리의 다른 글

[내일배움캠프] 260504 TIL #13  (0) 2026.05.04
[내일배움캠프] 260430 TIL #12 입문프로젝트 마무리  (0) 2026.04.30
[내일배움캠프] 260417 TIL #10 CRUD Code Shadowing 2차  (0) 2026.04.17
[내일배움캠프] 260416 TIL #9 입문 프로젝트 시작  (0) 2026.04.16
[내일배움캠프] 주특기 입문 MSA 요약본  (0) 2026.04.15
'내일배움캠프/TIL' 카테고리의 다른 글
  • [내일배움캠프] 260504 TIL #13
  • [내일배움캠프] 260430 TIL #12 입문프로젝트 마무리
  • [내일배움캠프] 260417 TIL #10 CRUD Code Shadowing 2차
  • [내일배움캠프] 260416 TIL #9 입문 프로젝트 시작
이서라다
이서라다
  • 이서라다
    개발일지
    이서라다
  • 전체
    오늘
    어제
    • 전체 보기 (79)
      • 내일배움캠프 (21)
        • TIL (21)
      • 프로그래머스 (23)
      • Algorithm (2)
      • BackEnd (0)
        • Spring (0)
      • Language (4)
        • JAVA (4)
      • Git (2)
      • 백준 - Java (25)
        • 입출력과 사칙연산 (6)
        • 반복문 (8)
        • 1차원 배열 (1)
        • 문자열 (7)
        • 2차원 배열 (1)
        • 조합론 (1)
        • 정렬 (1)
      • IDE (1)
        • IntelliJ (1)
      • 티스토리 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    jdk삭제
    티스토리스킨
    내일배움캠프
    til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이서라다
[내일배움캠프] 260419 TIL #11 CRUD Code Shadowing 3차(최종)
상단으로

티스토리툴바