REST API 만들기-1

스프링 기반 REST API 개발 -백기선님 인프런 강좌를 보고 작성하였습니다.

추가할 의존성 및 JDK 버전

  • Web
  • JPA
  • HATEOAS
  • REST Docs
  • H2
  • PostgreSQL
  • Lombok
  • JDK 11

    입력으로 받을 값들

  • name
  • description
  • beginEnrollmentDateTime
  • closeEnrollmentDateTime
  • beginEventDateTime
  • endEventDateTime
  • location (optional) 이게 없으면 온라인 모임
  • basePrice (optional)
  • maxPrice (optional)
  • limitOfEnrollment
basePrice maxPrice 설명
0 100 선착순등록
0 0 무료
100 0 무제한 경매(높은 금액 낸 사람이 등록)
100 200 제한가 선착순 등록

결과로 줄 값들

  • name
  • eventStatus: DRAFT, PUBLISHED, ENROLLMENT_STARTED, …
  • offline
  • free
  • _links
    • profile (for the self-descriptive message)
    • self
    • publish

      시작하기

      Event 클래스 만들기.

      패키지를 하나 만들고 그안에 Event 클래스를 생성한다.
      이벤트 클래스는 나중에 DB의 테이블과 매칭될 Entity 클래스 이다.
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      public class Event {
      private String name;
      private String description;
      private LocalDateTime beginEnrollmentDateTime;
      private LocalDateTime closeEnrollmentDateTime;
      private LocalDateTime beginEventDateTime;
      private LocalDateTime endEventDateTime;
      private String location;
      private int basePrice;
      private int maxPrice;
      private int limitOfEnrollment;
      }

EventStatus enum 클래스 생성

1
2
3
public enum EventStatus {
DRAFT, PUBLISHED, BEGEAN_ENROLLMENT;
}

Event 클래스에 lombok 어노테이션 추가

1
2
@Builder @AllArgsConstructor @NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of="id")

Test 클래스를 만들어 junit 테스트

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
@Test
public void builder(){
Event event = Event.builder()
.name("inflearn")
.description("rst API")
.build();
assertThat(event).isNotNull();

}

@Test
public void JavaBean(){
//Given
String name = "Event";
String description = "Spring";

//When
Event event = new Event();
event.setName("Event");
event.setDescription("Spring");

//Then
assertThat(event.getName()).isEqualTo(name);
assertThat(event.getDescription()).isEqualTo(description);
}

Lombok 과 AssertJ의 추가적인 설명

Lombok
AssertJ