Este repositório contém o código fonte do projeto desenvolvido durante o curso Full Cycle 4.0 - REST e Níveis de Maturidade na prática.
Luiz Carlos
- Introdução
- Slides
- Exemplo REST meia boca para E-commerce
- Documentação do HTTP
- Níveis de Maturidade REST
- Outro exemplo que uma API Restful com Laminas API Tools
- Lista de Verbos HTTP
- Lista de Status Codes
- Referências
Neste curso, exploramos os conceitos de REST e seus níveis de maturidade na prática, usando como exemplo um sistema de E-commerce que não implementa REST corretamente.
Operação | Método HTTP | Path |
---|---|---|
JWT login | POST | /jwt/login |
Session login | POST | /session/login |
Session logout | POST | /session/logout |
Create a customer | POST | /customers/createCustomer |
Get a customer by ID | GET | /admin/customers/getCustomerById |
List customers with pagination | GET | /admin/customers/listCustomers |
Update a customer | POST | /admin/customers/updateCustomer |
Delete a customer | POST | /admin/customers/deleteCustomer |
Create a category | POST | /admin/categories/createCategory |
Get a category by slug | GET | /categories/getCategoryBySlug |
List categories with pagination | GET | /categories/listCategories |
List categories in admin with pagination | GET | /admin/categories/listCategories |
Update a category | POST | /admin/categories/updateCategory |
Delete a category | POST | /admin/categories/deleteCategory |
Create a product | POST | /admin/products/createProduct |
Get a product by ID | GET | /admin/products/getProductById |
Get a product by slug | GET | /products/getProductBySlug |
Update a product | POST | /admin/products/updateProduct |
Delete a product | POST | /admin/products/deleteProduct |
List products with pagination | GET | /products/listProducts |
List products in admin with pagination | GET | /admin/products/listProducts |
Get CSV of products | GET | /admin/products/listProducts.csv |
Add an item to the cart | POST | /carts/addItemToCart |
Get a cart by ID | GET | /carts/getCart |
Remove an item from the cart | POST | /carts/removeItemFromCart |
Clear the cart | POST | /carts/clearCart |
Create an order | POST | /orders/createOrder |
List orders with pagination | GET | /orders/listOrders |
Criar um customer:
POST /customers HTTP/1.1
{
"call": "create",
"data": {
"name": "John Doe",
"email": "user@customer.com",
"phone": "1234567890",
"address": {
"street": "1234 Main St",
"city": "Springfield",
"state": "IL",
"zip": "62701"
}
}
}
Pegar um customer:
POST /customers HTTP/1.1
{
"call": "get",
"data": {
"id": 123
}
}
Operação | Método HTTP | Path |
---|---|---|
JWT login | POST | /jwt/login |
Session login | POST | /session/login |
Session logout | POST | /session/logout |
Create a customer | POST | /customers |
Get a customer by ID | GET | /admin/customers/:customer_id |
List customers with pagination | GET | /admin/customers |
Update a customer | PATCH | /admin/customers/:customer_id |
Delete a customer | DELETE | /admin/customers/:customer_id |
Create a category | POST | /admin/categories |
Get a category by slug | GET | /categories/:category_slug |
List categories with pagination | GET | /categories |
List categories in admin with pagination | GET | /admin/categories |
Update a category | PATCH | /admin/categories/:category_id |
Delete a category | DELETE | /admin/categories/:category_id |
Create a product | POST | /admin/products |
Get a product by ID | GET | /admin/products/:product_id |
Get a product by slug | GET | /products/:product_slug |
Update a product | PATCH | /admin/products/:product_id |
Delete a product | DELETE | /admin/products/:product_id/delete |
List products with pagination | GET | /products |
List products in admin with pagination | GET | /admin/products |
Get CSV of products | GET | /admin/products.csv |
Create a cart | POST | /carts |
Add an item to the cart | POST | /carts/:cart_uuid/items |
Get a cart by ID | GET | /carts/:cart_uuid |
Remove an item from the cart | DELETE | /carts/:cart_uuid/items/:cart_item_id |
Clear the cart | POST | /carts/:cart_uuid/clear |
Create an order | POST | /orders |
List orders with pagination | GET | /orders |
Verbo | Objetivo | Idempotente | Safe |
---|---|---|---|
GET |
Recuperar recursos | Sim | Sim |
POST |
Criar um recurso | Não | Não |
PUT |
Substituir recurso completamente | Sim | Não |
PATCH |
Atualizar parcialmente um recurso | Sim | Não |
DELETE |
Remover um recurso | Sim | Não |
HEAD |
Obter cabeçalhos | Sim | Sim |
OPTIONS |
Verificar métodos permitidos | Sim | Sim |
TRACE |
Depurar requisição | Sim | Não |
CONNECT |
Estabelecer túnel | Não | Não |
POST /products
{
"name": "Product 1",
"price": 100
}
{
"id": 1,
"name": "Product 1",
"price": 100,
"_links": {
"self": {
"href": "/products/1"
},
"update": {
"href": "/products/1",
"method": "PUT",
"type": "application/json"
},
"delete": {
"href": "/products/1",
"method": "DELETE"
}
}
}
Aqui está um exemplo de uma API Restful com Laminas API Tools.
Verbo | Objetivo | Idempotente | Safe |
---|---|---|---|
GET |
Recuperar recursos | Sim | Sim |
POST |
Criar um recurso | Não | Não |
PUT |
Substituir recurso completamente | Sim | Não |
PATCH |
Atualizar parcialmente um recurso | Sim | Não |
DELETE |
Remover um recurso | Sim | Não |
HEAD |
Obter cabeçalhos | Sim | Sim |
OPTIONS |
Verificar métodos permitidos | Sim | Sim |
Confira a lista completa de status codes no MDN.