Boas práticas no REST
Sempre utilizar substantivos
-
/getAllCars
❌ -
/createNewCar
❌ -
/deleteAllRedCars
❌
NUNCA alterar o estado de um recurso com GET
-
GET /users/2/activate
❌ -
GET /users/2/enable
❌
Usar plural
-
/cars
✅ -
car
❌
Usar sub-recursos para relacionamento entre recursos
GET /books/33/pages
Todo sub-recurso é um recurso em potencial (depende do negócio)
-
GET /states/10/cities
(“cities” como sub-recurso de “states”) -
GET /cities?region=north
(‘cities’ como recurso isolado do “states”)
Paginação, filtros e ordenação
-
NUNCA retornar todos os registros do banco de dados em uma única resposta
-
GET /regions?page=0&size=1&sort=name,desc
-
page=0
(número da página) = paginação -
size=1
(número de registros por página) = paginação -
sort=name,desc
= ordenação
-
-
GET /cities?page=0&size=10&sort=name,asc&state_id=5
-
page=0
(número da página) = paginação -
size=10
(número de registros por página) = paginação -
sort=name,desc
= ordenação -
state_id=5
= filtro
-
Versionamento da API (não quebrar o contrato da API)
-
Versionamento por Header (+ comum):
curl -X GET /cities -H "accept: application/vnd.brazil.api-v1.0+json"
-
Versionamento por Path:
curl -X GET /v1/cities
-
Versionamento via parâmetro:
curl -X GET /cities?api_version=1.0.0
Sempre escolher o HTTP Status Code corretamente
- Utilizar o código
201 CREATED
para criação de um recurso, e não o200 OK
Entender o domínio em questão afim de representar a API da melhor forma
Documentar a API
- Swagger: ferramenta (mais utilização) para implementar a especificação OpenAPI