-
오픈 API와 레일스
신바람 나는 웹 개발 루비온레일스
강문식
openmaru
-
웹 개발 트렌드
- ProgrammableWeb (or WritableWeb)
- Web As a Platform
- Software As a Service
- Rich Client
- Mashup
-
OpenAPI
- 개발자에게 무한한 자유와 재미를!
- 사용자에 가치를!
- 그리고 새로운 기회를!
- 꼼꼼하게 따져보고 고르세요... API는 지원하는지~
-
OpenAPI로 놀아볼까?
- 이베이에서 상품 정보를 가져와
- 구글 지도에서 생산지를 확인하고
- 플리커에서 이미지를 얻어와
- 아마존 스토리지에 가공한 정보를 저장
- 하는 야후 파이프를 만들어볼까?
-
API는 기본



-
API는 경쟁력



-
OpenAPI Best Practice
- Protocol => REST
- Keep It Simple
- Lightweight services
- Format
- XML
- JSON
-
레일스는 준비된 환경
- REST 지원
- 라우트를 통한 URL 재정의 (ex. /posts/1)
- 리소스 generator / scaffolding
- CRUD-Controller
- Browser workaround
- 여러 포맷 지원
- responds_to
- ActiveResource
-
사고의 전환
- 기존 사용자 중심의 사고
- 새로운 리소스 중심의 사고
- CRUD 예
- 사용자가 북마크를 한다 -> 북마크 리소스 생성 (CREATE)
- 사용자가 글을 읽는다 -> 글 리소스 열람 (READ)
- 사용자가 닉네임을 바꾼다 -> 사용자 리소스 수정 (UPDATE)
- 사용자가 로그아웃한다 -> 세션 리소스 삭제 (DELETE)
-
개발 방법의 변화
- 한 두개의 큰 컨트롤러 => 여러 개의 작은 컨트롤러들
- 작은 도메인 모델 => 큰 도메인 모델 (Naked Object Pattern)
-
새로운 MVC (1)
- 모델 -> 리소스
- 컨트롤러 -> 모델(리소스)를 외부로 노출하는 REST 애플리케이션 서버
- 뷰 -> HTML Presentation Server 또는 Client-side Logic
-
새로운 MVC (2)

-
새로운 MVC (3)

-
DEMO
script/generate scaffold_resource post name:string body:text created_at:date time published:boolean
-
REST Controller (1)

-
REST Controller (2)

-
REST Routes

-
ActiveResource
- Active Record for web resources

-
springnote OpenAPI (1)
- 레일스여서 좋았다
- 의도하지 않아도 자연스럽게 어색하지 않은 OpenAPI가 만들어졌다.
- route가 있고 동적언어였기에 API 변동에도 쉽게 대응할 수 있다.
- alias_attributes
- 즐겁고 새로운 경험
-
springnote OpenAPI (2)
- 힘들었던 점
- 레일스 관례를 조금이라도 거스르기 시작하면 고난의 시작이다
- 아직 개발 중이다
- 팀 내부에서 리소스 중심 사고가 자리 잡은 것은 프로젝트 마무리 쯤이었다
-
감사합니다
END