Consumindo APIs REST com Ruby

24
Consumindo APIs REST com Ruby Guilherme Cavalcanti Líder técnico, plataforma de aplicativos Thursday, 31 January 13

Transcript of Consumindo APIs REST com Ruby

Page 1: Consumindo APIs REST com Ruby

Consumindo APIs REST com Ruby

Guilherme CavalcantiLíder técnico, plataforma de aplicativos

Thursday, 31 January 13

Page 2: Consumindo APIs REST com Ruby

REST

Thursday, 31 January 13

Page 3: Consumindo APIs REST com Ruby

Relembrando: REST

• Define a comunicação em sistemas distribuidos

• Padrões utilizados na comunicação

Thursday, 31 January 13

Page 4: Consumindo APIs REST com Ruby

REST is about

• Recursos

• Representações

• Interface uniforme

• Hypermedia

Thursday, 31 January 13

Page 5: Consumindo APIs REST com Ruby

Recurso

• São as entidades do sistema

• Usuário, Matrícula, Aula, Post, etc.

• Conceito abstrato

• Recurso != Representação

• Um recurso pode ser representado de diversas formas

Thursday, 31 January 13

Page 6: Consumindo APIs REST com Ruby

Recurso

{ "id": 4, "login": "guiocavalcanti", "first_name": "Guilherme", "last_name": "Cavalcanti", "birth_localization": "Recife, Brasil", "friends_count": 175, "localization": "Recife, Brasil", "email": "[email protected]", "social_networks": [ { "name": "linkedin", "profile": "http://br.linkedin.com/in/guiocavalcanti" }, { "name": "twitter", "profile": "http://www.twitter.com/guiocavalcanti" } ], "thumbnails": [ { "size": "32x32",

GET /api/me HTTP/1.1

Thursday, 31 January 13

Page 7: Consumindo APIs REST com Ruby

Interface uniforme

• As ações para operar um recurso são as mesmas

• criar um Post no mural

• criar um Disciplina

Thursday, 31 January 13

Page 8: Consumindo APIs REST com Ruby

Interface uniforme

POST /api/users/4/statuses HTTP/1.1Host: redu.com.brConnection: keep-aliveCache-Control: no-cachePragma: no-cacheAccept: application/jsonAuthorization: OAuth XXXContent-Type: application/json

{ "status" : { "text" : "API 101" } }

Thursday, 31 January 13

Page 9: Consumindo APIs REST com Ruby

Interface uniforme

POST /api/courses/19/spaces HTTP/1.1Host: redu.com.brConnection: keep-aliveCache-Control: no-cachePragma: no-cacheAccept: application/jsonAuthorization: OAuth XXXContent-Type: application/json

{ "space" : { "name" : "Minha Disciplina" } }

Thursday, 31 January 13

Page 10: Consumindo APIs REST com Ruby

Hypermedia

• Uma API REST deve se comportar como uma página web

• Cada página contém referências para outras páginas que são importantes naquele contexto

Thursday, 31 January 13

Page 11: Consumindo APIs REST com Ruby

Hypermedia

"links": [ { "href": "http://www.redu.com.br/api/users/guiocavalcanti/statuses/timeline", "rel": "timeline" }, { "href": "http://www.redu.com.br/api/users/guiocavalcanti/contacts", "rel": "contacts" }, { "href": "http://www.redu.com.br/api/users/guiocavalcanti/statuses", "rel": "statuses" }, { "href": "http://www.redu.com.br/api/users/guiocavalcanti/chats", "rel": "chats" }, { "href": "http://www.redu.com.br/api/users/guiocavalcanti/enrollments", "rel": "enrollments" }, {

GET /api/me HTTP/1.1

Thursday, 31 January 13

Page 12: Consumindo APIs REST com Ruby

Hands on

Thursday, 31 January 13

Page 13: Consumindo APIs REST com Ruby

OAuth

Thursday, 31 January 13

Page 14: Consumindo APIs REST com Ruby

OAuth 2.0

• Dono do recurso

• Aplicação terceira

• Servidor de autenticação

• Servidor de recursos

Thursday, 31 January 13

Page 16: Consumindo APIs REST com Ruby

Hands on

Thursday, 31 January 13

Page 17: Consumindo APIs REST com Ruby

Instalação

Thursday, 31 January 13

Page 18: Consumindo APIs REST com Ruby

Instalando no Windows

http://railsinstaller.org/

Thursday, 31 January 13

Page 19: Consumindo APIs REST com Ruby

Instalando no Linux/Mac

$ curl -L https://get.rvm.io | bash -s stable --ruby

https://rvm.io/

http://railscasts.com/episodes/200-rails-3-beta-and-rvm

Thursday, 31 January 13

Page 20: Consumindo APIs REST com Ruby

OAuth 2 com Ruby

Thursday, 31 January 13

Page 21: Consumindo APIs REST com Ruby

OAuth 2.0

https://github.com/intridea/oauth2

Thursday, 31 January 13

Page 22: Consumindo APIs REST com Ruby

HTTP com Ruby

Thursday, 31 January 13

Page 23: Consumindo APIs REST com Ruby

OAuth 2.0

https://github.com/lostisland/faraday

Thursday, 31 January 13

Page 24: Consumindo APIs REST com Ruby

Gerenciamento de dependências

http://gembundler.com/

$ gem install bundler

Thursday, 31 January 13