본문 바로가기

REST API7

Spring REST API - 인증 Spring REST API - 인증 인증 엔터티를 하나 만들어보자. @Entity @Getter @Setter @EqualsAndHashCode(of = "id") @Builder @AllArgsConstructor @NoArgsConstructor public class Account { @Id @GeneratedValue private Integer id; private String email; private String password; @ElementCollection(fetch = FetchType.EAGER) @Enumerated(EnumType.STRING) private Set roles; } roles 필드는 권한 정보를 담고 있는 enum 타입의 필드이다. 여러 값을 가지는데, @El.. 2021. 1. 29.
Spring REST API - 조회 테스트 Spring REST API - 조회 이벤트 목록 조회 이벤트 목록은 조회하는 API를 만들어보자 우선 만들 요건은 Event 30개가 담긴 목록이다. 각 이벤트는 Page 정보를 담고 있다. TDD 방식으로 먼저 테스트 작성 후 그에 맞는 소스코드를 만든다. @Test @DisplayName("30개의 이벤트를 10개씩 묶어서 두번재 페이지 조회") public void queryEvents() throws Exception { // Given IntStream.range(0, 30).forEach(this::generateEvent); // When this.mockMvc.perform(get("/api/events") .param("page", "1") .param("size", "10") .par.. 2021. 1. 28.
Spring REST API - HATEOAS Spring REST API - HATEOAS HATEOAS 란 Hypermeida As The Engine Of Applicaton State 의 약자로, REST API 의 개념을 충족시키는 조건 중 하나이다. 서버는 리소스를 보낼 때 리소스와 연관된 링크 정보를 담아 클라이언트에게 제공해야하며, 클라이언트는 링크 정보를 바탕으로 리소스에 접근해야한다는 원칙이다. 연관된 링크 정보는 { relation : href } 쌍으로 묶어서 _links 안에 넣어주면 된다. 예를 들면 아래와 같다. self 는 자기 자신에 대한 href 정보를 제공한다. 그 외에 query-events 라는 relation 에는 해당 리소스 정보를 담고 있는 href 를 담아주면 된다. { ..., "_links":{ "se.. 2021. 1. 24.
Spring REST API - 테스트코드 파라미터사용 Spring REST API - 테스트코드 파라미터 리팩토링 JUnitParam 을 사용해서 테스트 코드에서 매개변수만 바꾸어 중복된 코드를 제거한다. 아래와 같이 3개의 테스트를 실행하는데, 값만 바꾸어 가면서 테스트하려한다. 하지만, 반복되는 코드가 길게 있으니 보기에 좋지 않다. JUnitParams 로 아래 코드를 리팩토링해보자. @Test public void testFree(int basePrice, int maxPrice, boolean isFree) { //------------------------------------------------ // Given Event event = Event.builder() .basePrice(0) .maxPrice(0) .build(); // When.. 2021. 1. 23.
Spring REST API - BadRequest Spring REST API - Bad Request 빈 입력값 처리 JSR 303 라이브러리에 있는 Bean Validation 을 사용할 수 있다. pom.xml org.springframework.boot spring-boot-starter-validation 각 필드마다 필드의 속성들을 어노테이션으로 달아준다. @Builder @AllArgsConstructor @NoArgsConstructor @Data public class EventDto { @NotEmpty private String name; @NotEmpty private String description; @NotNull private LocalDateTime beginEnrollmentDateTime; @NotNull private.. 2021. 1. 23.
Spring REST API Spring REST API - REST API, 도메인 REST API 란? API : Application Programming Interface REST : REpresentational State Transfer, 인터넷 상 시스템 간 상호 운용성(interoperability)을 제공하는 방법 중 하나다. 통신 방법으로 주로 HTTP를 사용한다. 시스템 각각의 독립적인 진화를 보장하기 위한 아키텍처이다. REST 아키텍처 스타일 클라이언트-서버 Stateless Cache Uniform Interface Layered System Code-On-Demand (선택) REST 아키텍처 스타일 중 uniform Interface 에서 self-descrive messages 와 HATEOAS 가 대.. 2021. 1. 22.
[Web] Rest API 설명 REST API 1. Rest API 클라이언트의 종류가 웹 브라우저, 안드로이드 앱, ios앱 등 다양해지면서 클라이언트에게 정보를 제공하는 방식을 하나로 일원화해야 했습니다. 일원화시키는 방식 중에 대표적 방식이 HTTP protocol 로 API를 제공하는 것입니다. HTTP 프로토콜로 제공하는 API를 REST API 라고 합니다. API Application Programming Interface 약자입니다. API는 응용 프로그램에서 사용할 수 있도록 os나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공합니다. https://docs.oracle.com/javase/8/docs/ap.. 2019. 12. 2.
728x90