소프트 삭제, 댓글 투표 등 처음 기획 의도대로 스택 오버플로의 기능을 따라해 본다. 또 향후 확장성을 위해 리포지토리 패턴을 적용하고, 사용자 정의 콘솔 명령도 만들어 본다.
라라벨 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)이란 것이 있어, 서버로 부터 데이터를 받았더라도 브라우저가 데이터...
캐싱은 빠지지 않는 주제다. 왜냐하면 "돈"이기 때문이다. 서버의 컴퓨팅 자원, 네트워크 대역폭, 단말기의 컴퓨팅 자원 등등. API 데이터의 변경 여부에 따라, 캐싱을 제어하는 방법을 배운다.