SlideShare una empresa de Scribd logo
1 de 57
Descargar para leer sin conexión
REST
The right way
Quem sou?
Luís Santos - luis@luissantos.pt
Developer @ SAPO - Portugal Telecom
Rest: O que é?
Rest: O que é?
●
●
●
●

Representational state transfer
Arquitectura
Baseada em HTTP
Principios
○ Client-Server
○ Stateless
○ Cacheable
○ Layered System
Rest: Porquê?
Multiplataforma
●

Servidores
○

●

Todos os sistemas operativos e plataformas

Clientes
○

Todas as plataformas (incluindo p. moveis)
Segurança
● Confidencialidade dos dados
○ SSL
■ Destribuição de certificados

● Autenticação com certificados de cliente
Escalabilidade
● Escalabilidade horizontal
○ Proxys
○ Cache
○ Load Balancer
Recursos
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/
Verbos HTTP
GET, POST, PUT, DELETE, HEAD,
OPTIONS, PATCH(?)
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
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"
}
]
}
Verbos: GET
Pedido

Resposta
Http 1.1 200 OK

GET /api/books/9780199535569/

{
"isbn" : "9780199535569",
"name" : "Pride and Prejudice",
"publication_date" : "2009”
}
Verbos: POST
Cria um novo recurso.

Verbo
POST

endpoint
/api/books/

descrição
Adiciona um novo livro
Verbos: POST
Pedido

Resposta

POST /api/books/

Http 1.1 201 Created

{

{
"name" : "My Book"

"isbn" : "9999999999991",

}

"name" : "My Book"
}
Verbos: PUT
Modifica ou adiciona um recurso expecifico.

Verbo
PUT

endpoint
/api/books/9780199535569/

descrição
Altera ou adiciona o recurso
Verbos: PUT
Pedido

Resposta

PUT /api/books/9999999999991/

{

{

"name" : "My Book 2"
"name" : "My Book 2"

}

}
Verbos: DELETE
Apaga um recurso.

Verbo
DELETE

endpoint
/api/books/9780199535569/

descrição
Apaga o recurso
Verbos: DELETE
Pedido

Resposta

DELETE /api/books/9999999999991/

Status 200
Verbos: HEAD
Verifica se um recurso existe.

Verbo
HEAD

endpoint
/api/books/9780199535569/

descrição

Verifica se um recurso existe
Verbos: HEAD
Pedido

Resposta

HEAD /api/books/9780199535569/

Status 200
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.
Verbos: PATCH
Pedido

Resposta

PATCH /api/books/9780199535569/

{

{

"name" : "My Book 2",
"publication_date" : "2008”

}

"publication_date" : "2008”
}
Verbos: OPTIONS
Obtem metada sobre o recurso.
HTTP Status
Code
1xx, 2xx , 3xx, 4xx, 5xx
Http Status Code
Http Status Code
● 2xx - Sucesso
● 4xx - Erro (Client side)
● 5xx - Erro (Server side)
Http Status Code : Exemplos
●
●
●
●
●
●

200 Ok
400 Bad Request
404 Not Found
401 Unauthorized
403 Forbidden
500 Internal Server Error
Error Handling
Error Handling
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
Error codes
Certo
{

Errado
{

"error": 1345
"message" : "Invalid ISBN code"
"details" :"https://books.com/doc/errors/1345"
“id” : 12398231987312
}

"error": 1345
}
Cache
Cache
● Suporte para cache no protocolo
● Server Cache vs Client Cache
● Cache Headers
○ Cache-Control
○ Last-Modified
○ Etag
Cache: Client Cache (Cache-Control)
Cache: Client Cache (Last-Modified)
Cache: Client Cache (Etag)
Cache: Server Cache
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.
Autenticação
Autenticação
1.
●
●

2.

Utilização do header de autenticação. (Authorization)
Basic Authentication
○ Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Custom Authentication Scheme (Amazon AWS)
○ Authorization: AWS AKIAIOSFODNN7EXAMPLE:frJIUN8DYpKDtOLCwo//yllqDzg=

Utilização de certificado de cliente (SSL)
Content Type
Content Type
● JSON
○ Performance
○ Simplicidade
○ Dynamic Language (PHP,JS)

● XML
○ More tools
○ More features
○ Static language (Java,C#)
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
Versionamento
Versionamento
Certo
GET /api/v10/books/9780199535569

Errado
GET /api/books/9780199535569?v=10
GET /api/books/9780199535569
X-API-Version : 10
Concorrência
Concorrência
Problema:
2 clientes tentam modificar o recurso simultaneamente.
Como garantir que as alterações não se sobrepõem?
Solução:
Etag
Concorrência
WADL
Web Application Description Language
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
WADL
<application xmlns="http://wadl.dev.java.net/2009/02">
<resources base="https://books.com/api">
<resource path="books">
<method name="GET">
<request>
<param name="limit" required="false" default="30" style="query"/>
<param name="offset" required="false" default="0" style="query"/>
</request>
</method>
<resource path="{isbn}">
<param required="true" style="template" name="isbn"/>
<method name="GET"/>
<method name="DELETE"/>
</resource>
</resource>
</resources>
</application>
Outros
● Compressão “out of the box”
○ Gzip
Hypermedia API
FIM

Más contenido relacionado

La actualidad más candente

Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesGuilherme Pereira Silva
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIFernando Camargo
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsJúnior Porfirio
 
APIs Rest(Ful): como fazer, por Alex Piaz
APIs Rest(Ful): como fazer, por Alex PiazAPIs Rest(Ful): como fazer, por Alex Piaz
APIs Rest(Ful): como fazer, por Alex PiaziMasters
 
Tdc2019 intro event-sourcing_kafka
Tdc2019   intro event-sourcing_kafkaTdc2019   intro event-sourcing_kafka
Tdc2019 intro event-sourcing_kafkaMarcelo Ohashi
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
MUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu appMUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu appRenato de Oliveira
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosRafael Chaves
 
WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017Edgar Silva
 
Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0Germano Luis
 
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - .....NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....Renato Groff
 
Resolvendo problemas do dia a dia com slack e serverless.
Resolvendo problemas do dia  a dia com slack e serverless.Resolvendo problemas do dia  a dia com slack e serverless.
Resolvendo problemas do dia a dia com slack e serverless.Aline Oliveira Dias
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...Emmanuel Neri
 
Xamarin em 7 minutos
Xamarin em 7 minutosXamarin em 7 minutos
Xamarin em 7 minutosakamud
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Renato Groff
 

La actualidad más candente (20)

Mule Meetup Cache Redis
Mule Meetup Cache RedisMule Meetup Cache Redis
Mule Meetup Cache Redis
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
Serverless em Go
Serverless em GoServerless em Go
Serverless em Go
 
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom PolicesSão Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
São Paulo MuleSoft Meetup - Unwired API Led & Custom Polices
 
Boas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful APIBoas práticas no desenvolvimento de uma RESTful API
Boas práticas no desenvolvimento de uma RESTful API
 
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIsDevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
DevPira Festival 21 - .NET6 Uma nova forma de construir apis MinimalAPIs
 
APIs Rest(Ful): como fazer, por Alex Piaz
APIs Rest(Ful): como fazer, por Alex PiazAPIs Rest(Ful): como fazer, por Alex Piaz
APIs Rest(Ful): como fazer, por Alex Piaz
 
Tdc2019 intro event-sourcing_kafka
Tdc2019   intro event-sourcing_kafkaTdc2019   intro event-sourcing_kafka
Tdc2019 intro event-sourcing_kafka
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Mulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit BrazilMulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit Brazil
 
MUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu appMUnit: Encontre os bugs antes que eles encontrem seu app
MUnit: Encontre os bugs antes que eles encontrem seu app
 
Construindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutosConstruindo um micro-serviço Java 100% funcional em 15 minutos
Construindo um micro-serviço Java 100% funcional em 15 minutos
 
WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017WSO2 Novo Modelo de Subscrições e Produtos 2017
WSO2 Novo Modelo de Subscrições e Produtos 2017
 
Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0Projeto IV - Tecnologias básicas da Web X.0
Projeto IV - Tecnologias básicas da Web X.0
 
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - .....NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
.NET e ASP.NET Core 2.2, .NET Core 3, Visual Studio 2019: uma visão geral - ....
 
Resolvendo problemas do dia a dia com slack e serverless.
Resolvendo problemas do dia  a dia com slack e serverless.Resolvendo problemas do dia  a dia com slack e serverless.
Resolvendo problemas do dia a dia com slack e serverless.
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
 
Xamarin em 7 minutos
Xamarin em 7 minutosXamarin em 7 minutos
Xamarin em 7 minutos
 
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
Boas práticas na implementação de APIs REST com ASP.NET Core - Agosto-2019
 

Similar a REST: The right way

Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoDavid Robert Camargo de Campos
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com JavaJugVale
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaSensedia
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Tiago Hillebrandt
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Jeronimo Zucco
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Gabriel Machado
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Jeronimo Zucco
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPedro Fernandes Vieira
 
OWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbookOWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbookGiovane Liberato
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com JavajesuinoPower
 
Visao geral TI04 2-0
Visao geral TI04 2-0Visao geral TI04 2-0
Visao geral TI04 2-0Ale Uehara
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAnitaibezerra
 
Economize o Consumo de Link WAN com o BranchCache
Economize o Consumo de Link WAN com o BranchCacheEconomize o Consumo de Link WAN com o BranchCache
Economize o Consumo de Link WAN com o BranchCacheRodrigo Immaginario
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 

Similar a REST: The right way (20)

Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Design de APIs REST
Design de APIs RESTDesign de APIs REST
Design de APIs REST
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
Como um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenhoComo um grande sistema REST funciona - arquitetura e desempenho
Como um grande sistema REST funciona - arquitetura e desempenho
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Django
DjangoDjango
Django
 
PostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro VieiraPostgreSQL - Visão Geral - Pedro Vieira
PostgreSQL - Visão Geral - Pedro Vieira
 
OWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbookOWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbook
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com Java
 
Visao geral TI04 2-0
Visao geral TI04 2-0Visao geral TI04 2-0
Visao geral TI04 2-0
 
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDAOficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
Oficina técnica da Infraestrutura Nacional de Dados Abertos - INDA
 
Economize o Consumo de Link WAN com o BranchCache
Economize o Consumo de Link WAN com o BranchCacheEconomize o Consumo de Link WAN com o BranchCache
Economize o Consumo de Link WAN com o BranchCache
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
Apresentação Drupal como LMS
Apresentação Drupal como LMSApresentação Drupal como LMS
Apresentação Drupal como LMS
 

REST: The right way