4. Rest: O que é?
●
●
●
●
Representational state transfer
Arquitectura
Baseada em HTTP
Principios
○ Client-Server
○ Stateless
○ Cacheable
○ Layered System
10. Recursos
Elementos de informação ou “registos” que podem usados através do seu URI (uniform resource
identifier).
Exemplos:
/api/books/
/api/books/9780199535569/
/api/books/9780199535569/authors
/api/authors/
/api/authors/123/
12. Verbos: GET
Obter informação sobre um recurso. Este verbo não afecta o estado do
recurso.
Verbo
endpoint
descrição
GET
/api/books/
Lista todos os livros
GET
/api/books/?limit=2&offset=10
Lista livros usando paginação
GET
/api/books/author=John doe
Pesquisa livros pelo nome do autor
GET
/api/books/9780199535569/
Detalhes de um livro
13. Verbos: GET
Pedido
Resposta
{
"total": 20,
GET /api/books/?limit=2&offset=10
"items": [
{
"isbn": "9780199535569",
"name": "Pride and Prejudice"
},
{
"isbn": "9780199535569",
"name": "Pride and Prejudice"
}
]
}
14. Verbos: GET
Pedido
Resposta
Http 1.1 200 OK
GET /api/books/9780199535569/
{
"isbn" : "9780199535569",
"name" : "Pride and Prejudice",
"publication_date" : "2009”
}
15. Verbos: POST
Cria um novo recurso.
Verbo
POST
endpoint
/api/books/
descrição
Adiciona um novo livro
23. Verbos: PATCH
Modifica parcialmente um recurso.
http://www.rfc-editor.org/info/rfc5789 (Status: PROPOSED STANDARD)
Verbo
PATCH
endpoint
/api/books/9780199535569/
descrição
Altera apenas algumas propriedades do
recurso.
32. Error codes
●
●
●
●
●
Usar sempre um código HTTP adequado
Códigos de erro categorizados
Mensagem de erro
Link para a documentação
Identificador unico do pedido
○ Debug
40. Cache: Cache-Control
●
●
●
Cache-control: public
○ means the cached version can be saved by proxies and other
intermediate servers, where everyone can see it.
Cache-control: private
○ means the file is different for different users (such as their personal
homepage). The user’s private browser can cache it, but not public
proxies.
Cache-control: no-cache
○ means the file should not be cached. This is useful for things like
search results where the URL appears the same but the content may
change.
44. Content Type
● JSON
○ Performance
○ Simplicidade
○ Dynamic Language (PHP,JS)
● XML
○ More tools
○ More features
○ Static language (Java,C#)
45. Content Type
Certo
GET /api/books/9780199535569
Accept: application/json
Errado
GET /api/books/9780199535569.json
GET /api/books/9780199535569.xml
GET /api/books/9780199535569
Accept: application/xml
GET /api/books/9780199535569
Accept: application/epub+zip
GET /api/books/9780199535569?type=json
52. WADL
● “The Web Application Description Language
(WADL) is a machine-readable XML
description of HTTP-based web applications
(typically REST web services).” - Wikipedia
● Semelhante ao WSDL