API 6

API 예외 처리

HTML 페이지의 경우에는 4xx, 5xx.html과 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있지만, API의 경우에는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야한다. 어떻게 이를 처리할 수 있을까? 먼저 처음으로 돌아가 Servlet 오류 페이지 방식을 사용해보자. api를 처리하는 컨트롤러를 만들고 내부에 static 클래스로 memberDto를 만들어 진행하겠다.(실제 작업시에는 별도로 생성해야함) @RestController이기 때문에 id가 ex가 아니라면 json형식으로 응답이 반환될 것이고 ex라면 RuntimeException이 발생해 오류 페이지를 내부적으로 호출해 반환될 것이다. 먼저 정상 요청이다. 다음으로 런타임에러를 발생시켜본다...

Spring/Spring MVC 2021.07.28

Bean Validation

대부분의 특정 필드에 대한 검증 로직은 일반적인 로직이고 공통적이다. 이런 검증 로직을 모든 프로젝트에 적용하도록 공통화, 표준화한것이 바로 Bean Validation!! public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Integer quantity; } Bean Validation이 뭔데? Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준. 검증 애노테이션과 여러 인터페이스의 모음. 이..

Spring/Spring MVC 2021.07.14

API 개발 고급

1. 지연 로딩과 조회 성능 최적화 엔티티를 직접 노출 저장된 모든 order를 찾아 리스트에 담고 엔티티를 그대로 반환 Postman으로 요청을 전송해보자. 먼저 앞서 공부한 것과 같이 엔티티를 그대로 노출하는 것은 굉장히 좋지 않은 행위이다. 또한, 응답을 보면 무한 loop에 빠져 StackOverflow가 발생하는 것을 확인할 수 있다. 이는 Order와 Member가 현재 양방향 관계로 매핑되어 있기 때문에 양방향관계에 의한 순환 참조로 인해 무한 Loop가 발생하기 때문이다. 이를 어떻게 해결하여야 할까? 현재 주문을 조회하고 있기 때문에 반대쪽 Member, OrderItem, Delivery에서 Order로 오는 것을 @JsonIgnore을 통해 막아야한다. 즉, 양방향 연관관계가 걸리는 ..

API 개발 기본

엔티티를 파라미터로 받을 경우의 문제 컨트롤러 엔티티 검증을 위한 @NotEmpty같은 로직들이 엔티티에 추가된다. 엔티티를 위한 매우 다양한 API가 만들어지는데, 한 엔티티에 각각의 API를 위한 요구사항들을 담기는 어려움 가장 큰 문제는 엔티티가 변경되면 API 스펙 자체가 변한다. 만약 엔티티의 name필드가 username으로 변경된다면 API 스펙 자체가 변하기 때문에 큰 문제가 발생한다. API 요청 스펙에 맞춰 별도의 DTO클래스를 만들어 DTO 객체를 파라미터로 받아야한다. 절대 파라미터로 엔티티를 바로 받지 말자!! 엔티티를 API 스펙에 노출 X 이와 같이 따로 DTO 클래스를 만들어 파라미터로 받아야한다. 예제를 위해 setter를 사용했지만 실제는 사용 X 엔티티와 표현 계층을 위..

개발형 코테

주로 클라이언트-서버간의 통신을 주고받는 형식으로 개발을 진행 클라이언트 서버 HTTP 개요 파이썬 웹 요청 예제 : GET 방식 import requests target = "http://google.com" response = requests.get(url=target) print(response.text) get방식으로 google에 접속하여 가져온 응답(response)를 text형식으로 출력하였다. 개발형 코딩 테스트의 핵심 키워드 : REST API, JSON REST의 등장 배경 REST 개요 REST API JSON JSON 객체 사용 예제 import json user = { "id": "minchul", "password": "1234", "age": 25, "hobby": ["codi..

Rest API❓❓ Restful❓❓

흔히 Rest API, Restful API와 같은 용어들을 자주 들어보았을텐데 이것이 무엇일까? Rest라는 말에 대해 알아보기전에 먼저 API라는 개념부터 알아야한다. API ❓❓ API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 이것을 쉽게 설명해보면 우리는 UI가 어떤 것인지 알고 있다. User Interface로써 사용자와 프로그램을 연결시켜주는 매개체이다. 이와 같이 API는 애플리케이션 사이를 연결해주는 매개체라고 생각하면 이해가 빠를 것이다. EX) 음식점 주문 프로그램 (손님 역할) 요리 프로그램 (요리..

잡담 2021.03.10
반응형