![Page 1: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/1.jpg)
fonte: http://shishkin.files.wordpress.com/2012/02/rest-v2-0.png
![Page 2: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/2.jpg)
@marlonscarvalho
marlon.carvalho.963
+MarlonCarvalho
profile/view?id=113395968
![Page 3: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/3.jpg)
pplicationrogrammingnterface
A
P
I
![Page 4: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/4.jpg)
![Page 5: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/5.jpg)
![Page 6: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/6.jpg)
![Page 7: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/7.jpg)
RMISOAPDCOM
XML-RPC
![Page 8: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/8.jpg)
![Page 9: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/9.jpg)
![Page 10: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/10.jpg)
![Page 11: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/11.jpg)
R E S T
![Page 12: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/12.jpg)
![Page 13: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/13.jpg)
![Page 14: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/14.jpg)
R E
S
T
PRESENTATIONAL
TATE
RANSFER
![Page 15: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/15.jpg)
NÃO É UM PADRÃO
![Page 16: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/16.jpg)
NÃO É UM FRAMEWORK
![Page 17: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/17.jpg)
ESTILO ARQUITETURAL
![Page 18: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/18.jpg)
![Page 19: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/19.jpg)
Por que ser REST?
![Page 20: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/20.jpg)
![Page 21: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/21.jpg)
http://martinfowler.com/articles/richardsonMaturityModel.html
![Page 22: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/22.jpg)
JSON XMLVS
![Page 23: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/23.jpg)
RECURSOSTUDO É UM RECURSO
![Page 24: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/24.jpg)
SOAPOPERAÇÕES MÉTODOS PROCEDURES
![Page 25: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/25.jpg)
![Page 26: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/26.jpg)
HTTPS://API.BEBUM.COM/<RECURSOS>
![Page 27: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/27.jpg)
HTTPS://API.BEBUM.COM/<RECURSOS>
![Page 28: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/28.jpg)
HTTPS://API.BEBUM.COM/<RECURSOS>
![Page 29: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/29.jpg)
HTTPS://API.BEBUM.COM/<RECURSOS>
![Page 30: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/30.jpg)
HTTPS://API.BEBUM.COM/TIPOS
![Page 31: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/31.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS
![Page 32: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/32.jpg)
PLURALUSE O PLURAL PARA REFERENCIAR RECURSOS
![Page 33: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/33.jpg)
HTTPS://API.BEBUM.COM/CERVEJASHTTPS://API.BEBUM.COM/CERVEJA
![Page 34: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/34.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS/1234
![Page 35: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/35.jpg)
/CERVEJAS?ID=1234HTTPS://API.BEBUM.COM
![Page 36: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/36.jpg)
![Page 37: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/37.jpg)
HTTPS://API.BEBUM.COM/ TIPOS/123/CERVEJAS/123/COMENTARIOS
![Page 38: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/38.jpg)
HTTPS://API.BEBUM.COM/TIPOS/1/CERVEJAS
![Page 39: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/39.jpg)
http://martinfowler.com/articles/richardsonMaturityModel.html
![Page 40: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/40.jpg)
HTTP METHODSGET POST PUT DELETE PATCH OPTIONS HEAD
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
![Page 41: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/41.jpg)
/CERVEJAS?ACAO=LISTAR/CERVEJAS/LISTARHTTPS://API.BEBUM.COM
![Page 42: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/42.jpg)
NUNCA USE VERBOS NA URI…OU QUASE NUNCA…
![Page 43: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/43.jpg)
![Page 44: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/44.jpg)
GETHTTPS://API.BEBUM.COM/CERVEJAS
![Page 45: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/45.jpg)
[{ "id": 1234, "nome": "Delirium Tremens”, "tipo": { "id": 1, "nome": "Tripel" }
}]
![Page 46: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/46.jpg)
POSTHTTPS://API.BEBUM.COM/CERVEJAS
![Page 47: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/47.jpg)
{ "id": 1234, "nome": "Delirium Tremens”, "tipo": { "id": 1, "nome": "Tripel" } }
![Page 48: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/48.jpg)
DELETEHTTPS://API.BEBUM.COM/CERVEJAS
![Page 49: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/49.jpg)
GETHTTPS://API.BEBUM.COM/CERVEJAS/1234
![Page 50: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/50.jpg)
{ "id": 1234, "nome": "Delirium Tremens”, "tipo": { "id": 1, "nome": "Tripel" } }
![Page 51: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/51.jpg)
PUTHTTPS://API.BEBUM.COM/CERVEJAS/1234
![Page 52: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/52.jpg)
{ "id": 1234, "nome": "Delirium Tremens”, "tipo": { "id": 1, "nome": "Tripel" } }
![Page 53: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/53.jpg)
DELETEHTTPS://API.BEBUM.COM/CERVEJAS/1234
![Page 54: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/54.jpg)
PATCHHTTPS://API.BEBUM.COM/CERVEJAS/1234
![Page 55: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/55.jpg)
PATCH VS PUT
![Page 56: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/56.jpg)
http://www.ietf.org/rfc/rfc5789.txt
A new method is necessary to improve interoperability and prevent errors. The PUT method is already defined to overwrite a resource with a complete new body, and
cannot be reused to do partial changes.
![Page 57: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/57.jpg)
GET NUNCA ALTERA DADOS!
![Page 58: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/58.jpg)
GETHTTPS://API.BEBUM.COM/
CERVEJAS/1234/EDITAR?NOME=SCHIN
![Page 59: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/59.jpg)
GETHTTPS://API.BEBUM.COM/ CERVEJAS/DELETE/1234
![Page 60: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/60.jpg)
VERBOSDOIS CASOS ONDE ELES SÃO PERMITIDOS
![Page 61: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/61.jpg)
HTTPS://API.BEBUM.COM/BUSCARHTTPS://API.BEBUM.COM/CALCULAR
![Page 62: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/62.jpg)
CREATE RETRIEVE UPDATE DELETEPOST PUT DELETEGET
PATCH
![Page 63: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/63.jpg)
PUTHTTPS://API.BEBUM.COM/CERVEJAS/1234
Não existe uma cerveja com ID=1234
![Page 64: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/64.jpg)
"If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be
considered as a modified version of the one residing on the origin server. If the Request-URI
does not point to an existing resource, and that URI is capable of being defined as a new
resource by the requesting user agent, the origin server can create the resource with that URI. "
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
![Page 65: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/65.jpg)
HTTP STATUS CODES200 - 300 - 400 - 500
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
![Page 66: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/66.jpg)
![Page 67: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/67.jpg)
200 OK 201 CREATED 202 ACCEPTED
204 NO CONTENT 206 PARTIAL CONTENT
![Page 68: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/68.jpg)
GET HTTPS://API.BEBUM.COM/CERVEJAS200 OK
206 PARTIAL RESPONSE
![Page 69: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/69.jpg)
POST HTTPS://API.BEBUM.COM/CERVEJAS201 CREATED
![Page 70: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/70.jpg)
PUT HTTPS://API.BEBUM.COM/CERVEJAS/1200 OK
![Page 71: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/71.jpg)
DELETEHTTPS://API.BEBUM.COM/CERVEJAS/1
200 OK204 NO CONTENT
![Page 72: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/72.jpg)
301 MOVED PERM. 307 TEMP. REDIRECT
![Page 73: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/73.jpg)
422 UNPROCESSABLE ENTITY 401 UNAUTHORIZED
404 NOT FOUND 409 CONFLICT
429 TOO MANY REQS
![Page 74: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/74.jpg)
401 UNAUTHORIZEDPOST HTTPS://API.BEBUM.COM/CERVEJAS
![Page 75: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/75.jpg)
404 NOT FOUNDDELETE HTTPS://API.BEBUM.COM/CERVEJAS/1
![Page 76: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/76.jpg)
409 CONFLICTPUT HTTPS://API.BEBUM.COM/CERVEJAS/1
![Page 77: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/77.jpg)
422 UNPROCESSABLE ENTITYPOST HTTPS://API.BEBUM.COM/CERVEJAS
![Page 78: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/78.jpg)
400 BAD REQUESTPOST HTTPS://API.BEBUM.COM/CERVEJAS
![Page 79: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/79.jpg)
{ codigo: 1, descricao: “Erro por falta de informações…”, url: “http://api.bebum.com/doc/erro/1", mensagem: “Este erro ocorreu porque…" }
![Page 80: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/80.jpg)
200 OK
POSTHTTPS://API.BEBUM.COM/CERVEJAS
![Page 81: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/81.jpg)
500 INTERNAL ERROR 501 NOT IMPLEMENT.
503 SRV. UNAVAILABLE
![Page 82: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/82.jpg)
EVITE INVENTAR NOVOS Não crie novos status code. Já existem
muitos e são suficientes!
![Page 83: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/83.jpg)
VERSIONAMENTO TUDO EVOLUI. OU DEVERIA…
http://stackoverflow.com/questions/389169/best-practices-for-api-versioning
![Page 84: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/84.jpg)
HTTPS://API.BEBUM.COM/v1/
![Page 85: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/85.jpg)
HTTPS://API.BEBUM.COM/2014-09-27/
![Page 86: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/86.jpg)
HTTPS://API.BEBUM.COM/12355613/
![Page 87: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/87.jpg)
CABEÇALHO PERSONALIZADO X-VERSION: 1
![Page 88: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/88.jpg)
CABEÇALHO EXISTENTE Accept: application/json; v1
![Page 89: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/89.jpg)
EVITE
Accept: application/json; v1.0.1
![Page 90: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/90.jpg)
JSON XML PNG
![Page 91: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/91.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS/1234.json
![Page 92: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/92.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS/1234.xml
![Page 93: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/93.jpg)
![Page 94: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/94.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS/1234
Accept: application/jsonGET
![Page 95: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/95.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS/1234
Accept: application/xmlGET
![Page 96: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/96.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS/1234
Accept: image/pngGET
![Page 97: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/97.jpg)
HTTPS://API.BEBUM.COM/CERVEJASContent-Type: application/json
POST
![Page 98: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/98.jpg)
HTTPS://API.BEBUM.COM/CERVEJASContent-Type: application/xml
POST
![Page 99: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/99.jpg)
FILTROS E se quisermos cervejas com nome
“Stella"?
![Page 100: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/100.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS/STELLAGET
![Page 101: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/101.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS?NOME=STELLAGET
![Page 102: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/102.jpg)
PAGINAÇÃO E se houver muitas cervejas?
![Page 103: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/103.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS?offset=1&limit=10 GET
![Page 104: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/104.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS
accept: application/jsonGET
x-offset: 1x-limit: 15
![Page 105: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/105.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS
Accept: application/jsonGET
Range: entidade=1-10
status: 206 ou 416
REQUEST:
RESPONSE:
Content-Range: entidade=1-10/1000
![Page 106: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/106.jpg)
http://stackoverflow.com/questions/924472/paging-in-a-rest-collection
https://devcenter.heroku.com/articles/platform-api-reference
![Page 107: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/107.jpg)
PARTIAL RESPONSES Preocupe-se com os dispositivos móveis
http://yaoganglian.com/articles/partial-response/
http://googlecode.blogspot.ca/2010/03/making-apis-faster-introducing-partial.html
![Page 108: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/108.jpg)
{ "id": 1234, "campo1": "Teste", "campo2": { "id": 1, "nome": "Teste" }, "campo3": "Teste", "campo4": { "id": 1, "nome": "Teste" }, "campo5": "Teste", "campo6": { "id": 1, "nome": "Teste" }, "nome": "Teste", "campo7": { "id": 1, "nome": "Teste" }, "campo8": "Teste", "campo9": { "id": 1, "nome": "Teste" } }
500kb
![Page 109: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/109.jpg)
{ "id": 1234, "campo1": "Teste", "campo2": { "id": 1, "nome": "Teste" } }
2kb
![Page 110: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/110.jpg)
http://googlecode.blogspot.ca/2010/03/making-apis-faster-introducing-partial.html
![Page 111: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/111.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS?fields=id,nomeGET
Status Code: 206
![Page 112: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/112.jpg)
HTTPS://API.BEBUM.COM/CERVEJAS?fields=id,nome,tipo(nome)GET
Status Code: 206
![Page 113: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/113.jpg)
http://yaoganglian.com/articles/partial-response/
![Page 114: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/114.jpg)
SEGURANÇA Como tornar minha API segura?
![Page 115: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/115.jpg)
![Page 116: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/116.jpg)
http://martinfowler.com/articles/richardsonMaturityModel.html
![Page 117: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/117.jpg)
HATEOAS Hypertext As The Engine
Of Application State
![Page 118: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/118.jpg)
![Page 119: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/119.jpg)
GETHTTPS://API.BEBUM.COM/CERVEJAS
![Page 120: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/120.jpg)
{ id: 1, nome: “Stella Artois” links: [{ href="http://api.bebum.com/cervejas/1", rel="self" },{ href="http://api.bebum.com/cervejas/1/comments", rel="comments" },{ href="http://api.bebum.com/cervejas/1", rel="like" }] }
![Page 121: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/121.jpg)
HATEOAS A API diz o que você pode fazer com
aquele recurso
![Page 122: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/122.jpg)
POSTHTTPS://API.BEBUM.COM/CERVEJAS
![Page 123: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/123.jpg)
Location: https://api.bebum.com/cervejas/1
HEADER
![Page 124: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/124.jpg)
{ "id": 1234, "nome": "Delirium Tremens”, "links": { "link": { "rel": "like", "href": "https:…/1/like" } }
![Page 125: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/125.jpg)
{ "id": 1, "nome": "Pilsen”, "links": { "link": { "rel": "cervejas", "uri": "…/tipos/1/cervejas" } }
![Page 126: RESTful API - GDG Tech Talk - Novembro de 2014](https://reader036.vdocuments.mx/reader036/viewer/2022062419/5598fb591a28ab75718b4650/html5/thumbnails/126.jpg)
http://www.infoq.com/br/articles/rest-introduction
Livros Indicados:
Artigos Indicados:
http://apigee.com/about/resources/ebooks/web-api-designhttp://sensedia.com/br/webinar-design-de-api-restful
http://restcookbook.com/