Top Banner
Consumindo APIs REST com Ruby Guilherme Cavalcanti Líder técnico, plataforma de aplicativos Thursday, 31 January 13
24
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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