포럼에 검색, 정렬 등 편의 기능을 추가한다. 사용자와 서버간의 핑퐁 속도를 높이기 위해 캐싱을 적용하고, 서비스를 활성화하기 위한 이메일 알림 기능등도 개발한다.
라라벨 5 입문 및 실전 on 16-01-21
소프트 삭제, 댓글 투표 등 처음 기획 의도대로 스택 오버플로의 기능을 따라해 본다. 또 향후 확장성을 위해 리포지토리 패턴을 적용하고, 사용자 정의 콘솔 명령도 만들어 본다.
포럼을 웹 브라우저 뿐만아니라, 모바일/데스크탑등 다른 기기에서도 사용할 수 있도록 데이터 API를 개발하는 실전 프로젝트다. 개발에 앞서 REST 원칙을 배운다.
API는 별도의 URL 엔드포인트와 컨트롤러를 사용한다. 그럼에도 불구하고, 웹 브라우저에서 들어 오는 요청과 처리 로직이 달라질 것이 없으므로, 컨트롤러를 최대한 재활용하고 중복을 제거하는 구조를 같이 고민해...
API 클라이언트는 웹 브라우저처럼 쿠키 메커니즘을 이용해 세션을 유지할 수 없다. 따라서 HTTP의 무상태 특성을 이용한 인증을 해야 한다. 매 요청마다 사용자 인증 정보를 전달해야 하므로 보안 이슈가 발생한다....
필자가 개발한 컴포저 컴포넌트를 이용해서 중복을 한번 더 제거한다.
API에서는 데이터 자체가 사용자에게 제공하는 뷰다. 데이터는 의미를 담고 있어서, 읽기 편하고, 탐색하기 편해야 한다. 블레이드로 HTML 페이지를 꾸몄듯이, 트랜스포머로 API 응답을 포맷팅하는 방법을 배운다.
API는 일종의 공공재다. 한 명이 독점하면 공공재의 비극이 찾아온다. 사용량 제한은 공공재를 사용자들간에 공평하게 나누어 쓸 수 있도록 한다. 무차별 HTTP 요청을 하는 해커의 공격을 막을 수 있는 부서적인 효...
자동 증가 ID는 여러 가지 문제가 있다. 어떤 문제인지는 본문에 자세히 설명하고 있다. ID를 난독화해서 연속성을 없애는 기능을 구현한다.
API 클라이언트 중에는 Ajax(XHR) 요청을 브라우저도 있을 수 있다. 브라우저에서는 동일 출처 보안 정책(CORS, Cross Origin Resource Sharing)이란 것이 있어, 서버로 부터 데이터를 받았더라도 브라우저가 데이터...