Introdução ao Backend
Internet, Web... ?
Protocolo HTTP
Frontend e Backend
REST e roteamento
notas em GraphQL
notas em MVC
notas em Microsserviços
Internet, Web... ?
Infraestrutura
Rede de computadores
Conteúdos
Páginas, apps
Internet
Web
Diferença
Internet, Web... ?
Cliente
Servidor
Arquitetura
Internet, Web... ?
Protocolo HTTP
Frontend e Backend
REST e roteamento
notas em GraphQL
notas em MVC
notas em Microsserviços
Protocolo HTTP
Requisição
Resposta
GET
POST
PUT/PATCH
DELETE
1xx
2xx
3xx
4xx
5xx
Internet, Web... ?
Protocolo HTTP
Frontend e Backend
REST e roteamento
notas em GraphQL
notas em MVC
notas em Microsserviços
Frontend e Backend
HTML
CSS
JavaScript
Vue.js
React.js
TailwindCSS
PostgreSQL
MongoDB
Sinatra.rb
Python com Django
Node.js
Express
Servidor clássico
página HTML
Requisições recebiam documentos HTML como resposta
Realidade: clientes sempre eram browsers
views
erb / haml
%section.container
%h1= post.title
%h2= post.subtitle
.content
= post.content
Frontend e Backend
Servidor moderno
dados serializados
documento JSON
Requisições recebem os dados em um documentos JSON como resposta
Realidade: diversidade de clientes (browser, apps, outros backends)
{
"post": {
"title": "Some title",
"subtitle": "Some subtitle",
"content": "Lorem ipsum dolor amet."
}
}
Frontend e Backend
Internet, Web... ?
Protocolo HTTP
Frontend e Backend
REST e roteamento
notas em GraphQL
notas em MVC
notas em Microsserviços
REST e roteamento
REpresentational State Transfer
Roy Fielding
sugestão de uso para os verbos de HTTP para ser mais semântico
GET domain.com/users
DELETE domain.com/users/42
POST domain.com/users --data { name: 'João' }
REST e roteamento
Roteamento
GET domain.com/users
DELETE domain.com/users/42
POST domain.com/users --data { name: 'João' }
Acessar a lista de todos os usuários cadastrados na plataforma
Criar um novo usuário na plataforma, com os dados informados
Remover da plataforma o usuário especificado
Internet, Web... ?
Protocolo HTTP
Frontend e Backend
REST e roteamento
notas em GraphQL
notas em MVC
notas em Microsserviços
notas em GraphQL
Descreva seus dados
Solicite o que deseja
Receba resultados previsíveis
type Project {
name: String
tagline: String
contributors: [User]
}
query {
project(name: "GraphQL") {
tagline
}
}
{
project: {
tagline: "A query language"
}
}
Alternativa ao REST
notas em GraphQL
type User { name: String email: String photo: String projects: [Project] } type Project {
name: String
area: String
contributors: [User]
}
query {
getUser(name: "João") {
name
projects {
name
area
}
}
}
{
user: {
name: "João",
email: "joao@mail.com",
projects: [
{
name: "USPCodeLab",
area: "Technology",
}, {
name: "Byron",
area: "Technology",
}
]
}
}
Boa alternativa ao REST
Internet, Web... ?
Protocolo HTTP
Frontend e Backend
REST e roteamento
notas em GraphQL
notas em MVC
notas em Microsserviços
notas em MVC
V for View
geração das visualizações e exibições
(front-end)
C for Controller
conexão entre camadas M e V e porta de entrada das requisições
(lógica de negócio)
M for Model
abstração da camada de persistência
(banco de dados)
notas em MVC
V for View
C for Controller
M for Model
Internet, Web... ?
Protocolo HTTP
Frontend e Backend
REST e roteamento
notas em GraphQL
notas em Microsserviços
notas em MVC
notas em Microsserviços
Monolito
Microsserviços
notas em Microsserviços
Codebase e Times de desenvolvimento
notas em Microsserviços
Escalabilidade
Introdução ao Backend
By João Daniel
Introdução ao Backend
- 623