Crie uma Web
API com
Asp.NET Core
+ EF Core
+ Docker
Vinícius de Andrade
facebook.com/ozirispc
youtube.com/ozirispc
twitter.com/ozirispc
instagram.com/ozirispc
Utilizaremos
Ferramentas
Visual Studio 2019 Visual Studio Code Postman
Tecnologias
Para quem é esse curso?
Para quem é esse curso?
Pessoa
Programadora
Pessoas
Back-end
Pré-requisitos?
Pré-requisitos?
• Conhecimento em C#.NET
• Pouco de POO
• Banco de dados
• Computador:
• Windows, Linux ou MAC
Vamos nessa?
Criando uma
API com
Asp.NET Core
Dinâmica da Web
1º) O cliente digita a URL
no seu Navegador
URL
(Uniform Resource Locator)
endereço para localizar os recursos na Web
Sintaxe: protocolo://maquina:porta/caminho
Exemplo:
http://www.sejafullstack.com.br/
http://localhost:8001/eventos/1
ftp:// http:// https://
1º) O cliente digita a URL
no seu Navegador
DNS
(Domain Name System ou Sistema de Nomes de Domínios)
Traduz os nomes para números IP
IP
(Internet Protocol ou Protocolo de internet)
É uma identificação única de um dispositivo em uma rede
2º) Solicita a um Servidor
DNS o endereço IP do
Servidor
3º) Devolve o IP do
servidor solicitado
1º) O cliente digita a URL
no seu Navegador 2º) Solicita a um Servidor
DNS o endereço IP do
Servidor
3º) Devolve o IP do
servidor solicitado
4º) O Navegador requisita um
recurso ao servidor utilizando o
endereço IP por meio do HTTP
5º) O servidor responde
a requisição utilizando o HTTP
(html, css, javascript, json, xml
imagem, som, vídeo…)
HTTP
(Hypertext Transfer Protocol)
Recupera recursos referenciados por uma URL
1º) O cliente digita a URL
no seu Navegador 2º) Solicita a um Servidor
DNS o endereço IP do
Servidor
3º) Devolve o IP do
servidor solicitado
4º) O Navegador requisita um
recurso ao servidor utilizando o
endereço IP por meio do HTTP
6º) Navegador
apresenta recurso
ou erro :o)
5º) O servidor responde
a requisição utilizando o HTTP
(html, css, javascript, json, xml
imagem, som, vídeo…)
O que é API?
“Acrônimo de Application Programming
Interface (Interface de Programação de
Aplicação) é basicamente um conjunto de
rotinas e padrões estabelecidos por uma
aplicação A, para que outras aplicações B,
C, D… possam utilizar as funcionalidades
desta aplicação A.
”
“Interface que são rotinas e padrões
estabelecidos na aplicação A, para que
outras aplicações B, C, D… possam utilizar
as funcionalidades desta aplicação A.
D
B
C
A
D
B
C
A
Rotinas e Padrões
estabelecidos na
Aplicação A
Rotinas e Padrões
estabelecidos na
Caixa de Madeira
D
B
C
A
”
“Responsável por estabelecer comunicação
entre diferentes serviços.
D
B
C
A
Introdução a REST
ROY THOMAS FIELDING
Architectural Style and the
Design of Network-based
Software Architectures
UNIVERSITY OF CALIFORNIA, IRVINE
DISSERTATION
in Information and Computer Science
2000
ROY THOMAS FIELDING
REST
“REST é um acrônimo para REpresentational
State Transfer (Transferência de estado
REpresentativo). Uma delimitação e
algumas obrigações, geralmente usando o
protocolo HTTP para enviar e receber os
recursos transferidos.
“REST é um acrônimo para REpresentational
State Transfer (Transferência de estado
REpresentativo). Uma delimitação e
algumas obrigações, geralmente usando o
protocolo HTTP para enviar e receber os
recursos transferidos.
1º) O cliente digita a URL
no seu Navegador
URL
(Uniform Resource Locator)
endereço para localizar os recursos na Web
Sintaxe: protocolo://maquina:porta/caminho
Exemplo:
http://www.sejafullstack.com.br/
http://localhost:8001/eventos/1
ftp:// http:// https://
protocolo://maquina:porta/recursos
Exemplo:
http://www.sejafullstack.com.br/
http://localhost:8001/eventos/1
REpresentational State Transfer
• Estão includes no Conceito:
• Separação de Cliente e Servidor
• Requests ao servidor são sem estado (Stateless)
• Request é “cacheados” (Cacheable Requests)
• Interface Uniforme
Problemas do REST
• Difíceis de serem classificadas como REST
Dogma do REST X Pragmatismo REST
• Estruturado como Estilo Arquitetural
• Necessário ser Produtivo
Em resumo…
• HTTP é crucial para as API’s na WEB.
• Usar REST é importante, então sejamos Pragmáticos.
• Nós estamos criando uma API simples para Aprender isso!
HTTP
(Hypertext Transfer Protocol)
Recupera recursos referenciados por uma URL
Request
VERBOS
HEADER
CONTENT
Request
POST
Content Length: 15
Olá Mundo Cruel
VERBOS
HEADER
CONTENT
Request
Response
STATUS CODE
HEADER
CONTENT
POST
Content Length: 15
Olá Mundo Cruel
VERBOS
HEADER
CONTENT
Request
Response
201
Content Type: Text
Olá! Sim, eu sou Cruel
POST
Content Length: 15
Olá Mundo Cruel
VERBOS
HEADER
CONTENT
STATUS CODE
HEADER
CONTENT
Request
Response
POST
Content Length: 15
Olá Mundo Cruel
VERBOS
HEADER
CONTENT
201
Content Type: Text
Olá! Sim, eu sou Cruel
STATUS CODE
HEADER
CONTENT
VERBO
HEADERS
CONTENT
Ações a serem executadas no Servidor
• GET: Requisitar Recursos (Request Resource)
• POST: Criar Recursos (Create Resource)
• PUT: Atualizar Recursos (Update Resource)
• PATCH: Atualizar Recursos Parcial (Update Partial)
• DELETE: Deletar Recursos (Delete Resource)
• Mais verbos…
Detalhando Request HTTP
VERBO
HEADERS
CONTENT
Metadados sobre a Requisição (Request)
• Content Type: Formato do Conteúdo
• Content Length: Tamanho do Conteúdo
• Authorization: Quem fez a Chamada
• Accept: Quais tipos são aceitáveis
• Cookies: Passagem de dados por Requisição
• Muitos outros recursos no Headers
Detalhando Request HTTP
VERBO
HEADERS
CONTENT
Conteúdo referente à Requisição (Content Request)
• HTML, CSS, JavaScript, XML, JSON…
• Conteúdo não é válido com qualquer VERBO
• Informações para ajudar a atender ao Requisição
• Onde passar tipos Binários e Blobs comuns.
Detalhando Request HTTP
Request
Response
POST
Content Length: 15
Olá Mundo Cruel
VERBOS
HEADER
CONTENT
201
Content Type: Text
Olá! Sim, eu sou Cruel
STATUS CODE
HEADER
CONTENT
Request
Response
201
Content Type: Text
Olá! Sim, eu sou Cruel
POST
Content Length: 15
Olá Mundo Cruel
VERBOS
HEADER
CONTENT
STATUS CODE
HEADER
CONTENT
STATUS CODE
HEADERS
CONTENT
Situação de Operação
• 100-199: Informação (Informational)
• 200-299: Sucesso (Success)
• 300-399: Redirecionamento (Redirection)
• 400-499: Erro do Cliente (Client Errors)
• 500-599: Erro do Servidor (Internal Server Errors)
Detalhando Response HTTP
STATUS CODE
HEADERS
CONTENT
Metadados sobre da Resposta (Response)
• Content Type: Formato do Conteúdo
• Content Length: Tamanho do Conteúdo
• Expires: Quando considerar obsoleto
• Accept: Quais tipos são aceitáveis
• Cookies: Passagem de dados pela Resposta
• Muitos outros recursos no Headers
Detalhando Response HTTP
STATUS CODE
HEADERS
CONTENT
Conteúdo (Content Response)
• HTML, CSS, JavaScript, XML, JSON
• Onde passar tipos Binários e Blobs comuns
• API’s frequentemente tem seus próprios tipos
• JSON é muito comum (senão o mais comum)
Detalhando Response HTTP
O que é JSON?
O que é JSON?
• JavaScript Object Notation
• ou regras para armazenamento e troca de informações em
texto
é mais rápido e mais fácil além de ser menor do que
XML para realizar o parse (Conversão)
para outras linguagens.
O que é JSON?
• é um formato leve na troca de dados
• e apesar de utiliza a sintaxe de JavaScript para descrever
objetos de dados é independente de linguagem e
plataforma.
Parsers e bibliotecas JSON existe para diversas linguagens
como:
C#, VB, Java, C++, Ruby, Python, etc…
{
"contatos": [
{ "nome": "José", "sobrenome": "Paulo" },
{ "nome": "Maria", "sobrenome": "Rita"},
{ "nome": "João", "sobrenome": "Maria" },
]
}
{
"contatos": [
{ "nome": "José", "sobrenome": "Paulo" },
{ "nome": "Maria", "sobrenome": "Rita"},
{ "nome": "João", "sobrenome": "Maria" },
]
}
Propriedade
{
"contatos": []
}
Valor
[
{"nome" : "José" , "sobrenome" : "Paulo"},
{"nome": "Maria", "sobrenome": "Rita"}
]
Objeto
A string JSON que define um array com 2 objetos.
Cada objeto possui duas propriedades (nome e sobrenome)
Array
{ "nome" : "José" , "sobrenome" : "Maria" }
Nome Valor
Nome
Valor
{ }
Chaves separam os objetos
Dados estão em pares Nome : Valor
Os dados estão separados por vírgulas
JSON: Demo
até o próximo vídeo
O que é
MVC?
…é um padrão arquitetural de
desenvolvimento, e não é apenas uma
tecnologia.
Framework's MVC possibilita a
Separação de Conceitos e/ou
Responsabilidades
Lógica de Negócios e lógica de
Interface NÃO se misturam
Alto controle de Interface
gerado
Permite o trabalho com TDD
(Test Driven Development)
“Deste modo, é importante ressaltar que o
M V C é u m p a d r ã o a r q u i t e t u r a l
implementado por várias tecnologias, entre
elas muitas que serão apresentadas logo a
seguir.
Onde está o Padrão?
Onde está o Padrão?
Onde está o Padrão?
Onde está o Padrão?
para onde foi o Padrão?
Onde está o Padrão?
Onde está o Padrão?
Onde está o Padrão?
Onde está o Padrão?
Padrão Arquitetural
Model
View
Controller
“
”
Model-View-Controller
A camada de Modelo (MODEL) possui duas
responsabilidades. Buscar os dados que sua aplicação usa
e fazem parte da regra de negócio, onde localiza-se
cálculos, procedimentos de verificações específicas em
relação ao domínio das regras do negócio.
”
“
Model-View-Controller
A camada de Apresentação (VIEW) é como o aplicativo
mostra o resultado das operações e os dados.
Normalmente podem ser uma bela página usando as novas
tecnologias front-end, até representações de objetos em
JSON ou XML.
”
“
Model-View-Controller
A camada de Controle (CONTROLLER) pode gerenciar
sessões e cookies, além de ser a camada que fará o
papel de determinar a melhor maneira de representar/
retornar os dados, seja por meio de uma renderização de
página HTML ou composição de um objeto em JSON.
ASP.NET MVC
Ruby on Rails
MEAN.JS
CakePHP
Django
Asp.net MVC Ruby on Rails MEAN.JS
Show me the Code!
até o próximo vídeo
compreensão geral para estruturar uma api

compreensão geral para estruturar uma api