플레이데이터 - 26일차 리스너/필터 & REST API
Listener / Filter
Listener
- 컨테이너에서 발생하는 이벤트를 모니터링하다가 이벤트 발생 시 실행되는 특수 서블릿(이벤트 리스너)
- 리스너는 애너테이션 기반 코드로 작성 가능함.
- 일반적인 형태의 서블릿이 아닌 특정 이벤트에 따라 동작하는 인터페이스를 구현한 클래스.
- 동작구조 : 클라이언트 → 서블릿 이벤트발생 → 서블릿 컨테이너 → 리스너 관련 클래스 객체
Filter
- 특정 요청에 동작하며, 여러개의 필터가 정해진 순서에 따라 배치 가능.
- 서블릿과 브라우저 간에 요청 / 응답이 발생할 때 미리 작업을 처리하는 기능.
- 서블릿에서 공통으로 수행되는 작업을 하난의 코드로 처리 가능.
- 특정 기능의 모듈화가 가능하기 때문에 가독성 및 재사용성이 올라가며, 유지 보수가 용이해진다.
REST API
- REST : 네트워크 상에서 클라이언트와 서버 사이의 통신을 구현하는 방법에 대한 아이디어.
- 하나의 Resource는 여러 형태의 Representation(json, xml,...)으로 전달할 수 있다는 개념.
- Representation : 클라이언트가 서버로 요청 시 서버가 응답으로 보내주는 Resource의 형태.
REST API 등장 배경
- 클라이언트-서버 프로그램 구조의 문제점 등장
- 웹을 사용함으로서 상당 부분 해경 가능하나, 웹은 기본적으로 클라이언트 요청에 대한 응답으로 화면 중심의 HTML을 제공하는 시스템이기 때문에 단순히 데이터를 주고 받고자 하는 서비스에는 적합하지 않다.
- 확장성이 뛰어나고 경량의 데이터 구조라고 할 수 있는 JSON이 주목받기 시작.
- 이와 함께 RESTful 개념이 재조명되어 본격적으로 적용되기 시작하여 지금의 프론트엔드 중심 개발을 이끌게 됨.
- 일반적으로 REST 원칙을 따르는 시슨템을 RESTful이라 하며, 웹 기반으로 구현된 서비스이다.
REST API 설계 원칙
- URI는 동사보다 명사, 대문자 보다는 소문자를 사용.
- 마지막에 슬래시(/)를 포함하지 않음.
- 언더바(_) 대신 하이폰(-) 사용.
- 상태 변경 시 GET 메서드와 쿼리 스트링 사용 금지
- 데이터 군은 복수 명사를 사용
- 관계 형태 표현에 하위 리소스 사용
- 에러 정보 제공
JAX-RS(Java API for RESTful Web Services)
- 자바 플랫폼에서 경량화된 REST 방식의 웹 애플리케이션 구현을 지원하는 자바 API.
- REST 원칙을 사용하는 개발 메커니즘을 제공하는 자바 표준 API
- REST 애플리케이션 개발을 단순화하는 인터페이스 및 Java 애너테이션의 집합체로 볼 수 있다.