OpenAPI with Rails

  1. 오픈 API와 레일스

    신바람 나는 웹 개발 루비온레일스

    강문식

    openmaru

  2. 웹 개발 트렌드

    1. ProgrammableWeb (or WritableWeb)
    2. Web As a Platform
    3. Software As a Service
    4. Rich Client
    5. Mashup
  3. OpenAPI

    1. 개발자에게 무한한 자유와 재미를!
    2. 사용자에 가치를!
    3. 그리고 새로운 기회를!
    4. 꼼꼼하게 따져보고 고르세요... API는 지원하는지~
  4. OpenAPI로 놀아볼까?

    1. 이베이에서 상품 정보를 가져와
    2. 구글 지도에서 생산지를 확인하고
    3. 플리커에서 이미지를 얻어와
    4. 아마존 스토리지에 가공한 정보를 저장
    5. 하는 야후 파이프를 만들어볼까?
  5. API는 기본

    Screenshot_4.png
    daum-openapi.gif
    Screenshot_3.png
  6. API는 경쟁력

    springnote.gif
    Screenshot_1.png
    Screenshot_2.png
  7. OpenAPI Best Practice

    1. Protocol => REST
      1. Keep It Simple
      2. Lightweight services
    2. Format
      1. XML
      2. JSON
  8. 레일스는 준비된 환경

    1. REST 지원
      1. 라우트를 통한 URL 재정의 (ex. /posts/1)
      2. 리소스 generator / scaffolding
      3. CRUD-Controller
      4. Browser workaround
    2. 여러 포맷 지원
      1. responds_to
    3. ActiveResource
  9. 사고의 전환

    1. 기존 사용자 중심의 사고
    2. 새로운 리소스 중심의 사고
    3. CRUD 예
      1. 사용자가 북마크를 한다 -> 북마크 리소스 생성 (CREATE)
      2. 사용자가 글을 읽는다 -> 글 리소스 열람 (READ)
      3. 사용자가 닉네임을 바꾼다 -> 사용자 리소스 수정 (UPDATE)
      4. 사용자가 로그아웃한다 -> 세션 리소스 삭제 (DELETE)
  10. 개발 방법의 변화

    1. 한 두개의 큰 컨트롤러 => 여러 개의 작은 컨트롤러들
    2. 작은 도메인 모델 => 큰 도메인 모델 (Naked Object Pattern)
  11. 새로운 MVC (1)

    1. 모델 -> 리소스
    2. 컨트롤러 -> 모델(리소스)를 외부로 노출하는 REST 애플리케이션 서버
    3. 뷰 -> HTML Presentation Server 또는 Client-side Logic
  12. 새로운 MVC (2)

    Radar

  13. 새로운 MVC (3)

    new-mvc.png
  14. DEMO

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

    controller1.png
  16. REST Controller (2)

    controller2.png
  17. REST Routes

    routes.png
  18. ActiveResource

    1. Active Record for web resources
    2. page_resource.png
  19. springnote OpenAPI (1)

    1. 레일스여서 좋았다
      1. 의도하지 않아도 자연스럽게 어색하지 않은 OpenAPI가 만들어졌다.
      2. route가 있고 동적언어였기에 API 변동에도 쉽게 대응할 수 있다.
        1. alias_attributes
      3. 즐겁고 새로운 경험
  20. springnote OpenAPI (2)

    1. 힘들었던 점
      1. 레일스 관례를 조금이라도 거스르기 시작하면 고난의 시작이다
      2. 아직 개발 중이다
      3. 팀 내부에서 리소스 중심 사고가 자리 잡은 것은 프로젝트 마무리 쯤이었다
  21. 감사합니다

    END