Skip to content

sehajyang/Springboot-REST-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

springboot REST API 개발 with TDD

springboot 기반 REST API 개발 강의를 보며 공부하는 repo

이 강좌에서는 다음의 다양한 스프링 기술을 사용하여 TDD로 REST API를 개발합니다.

  • 스프링 프레임워크
  • 스프링 부트
  • 스프링 데이터 JPA
  • 스프링 HATEOAS
  • 스프링 REST Docs
  • 스프링 시큐리티 OAuth2

테스트 주도 개발(TDD)로 진행합니다.


REST API

REST API라고 부를 수 있으려면

Self-Descriptive Message와 HATEOAS(Hypermedia as the engine of application state)를 만족해야 한다.

  • Self-Descriptive 해결법

    • 미디어 타입을 정의하고, IANA에 등록하고 그 미디어타입을 리소스 리턴할 때 Content-Type으로 사용한다
    • profile 링크 헤더를 추가한다
      • 브라우저들이 아직 스팩지원을 잘 안한다
      • 대안으로 HAL의 링크데이터에 profile링크 추가
  • HATEOAS 해결방법

    • 데이터에 링크 제공 => HAL 사용
    • 링크 헤더나 Location을 제공
  • HAL 이란 Hypertext Application Language

스프링부트 프로젝트

추가한 의존성

  • Web
  • JPA
  • HATEOAS
  • REST Docs
  • H2
  • PostgrsSQL
  • Lombok
  1. 스프링부트 핵심 원리
  • 의존성 설정
  • 자동설정(@EnableAutoConfiguration)
  • 내장 웹 서버
  • 독립적으로 실행가능한 JAR
  1. Event 생성 API 구현

    2-1. Event 도메인 구현

    • Lombok annotation은 Meta annotation에서 동작하지 않는다 => Custom annotation에 Lombok annotation을 사용하는 것은 의미가 없음
    • @EqualsAndHashCode
      • of 값으로 앤티티간의 연관관계(상호 참조하는)것은 추가하면 안됨
      • @EqualsAndHashCode로 구현한 코드 안에서 스택오버플로우가 발생할 수 있음
      • @Data 가 포함하는 어노테이션엔 EqualsAndHashCode 가 있는데 모든 엔티티를 다 써서 구현하기 때문에 순환참조 문제로 스택오버플로우 발생할 수 있음. 따라서 엔티티 위에 @Data는 사용하지 않는게 좋음

    2-2.

About

springboot REST API 개발 with TDD

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages