Uma API bem desenhada é consistente, previsível e pragmática. Aqui estão os princípios que guiam as melhores APIs públicas.

Naming

  • Substantivos no plural: /users, /posts, /comments
  • Verbos só em ações não-CRUD: /posts/1/publish
  • Consistência de case: prefira kebab-case ou snake_case, nunca misture
GET /users?page=1&per_page=20
POST /users
GET /users/42
PATCH /users/42
DELETE /users/42

Status codes

Use a semântica correta:

CódigoSignificadoQuando usar
200OKGET, PATCH bem-sucedido
201CreatedPOST que criou recurso
204No ContentDELETE bem-sucedido
400Bad RequestValidação falhou
401UnauthorizedSem autenticação
404Not FoundRecurso inexistente
422UnprocessableDados inválidos
429Too Many RequestsRate limit
500Internal ErrorAlgo quebrou no servidor

Paginação

{
  "data": [...],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 142
  }
}

Versionamento

Prefira header Accept a prefixo de URL:

Accept: application/vnd.api+json;version=2

Filtering, Sorting, Fields

GET /users?sort=-created_at&name=alice&fields=id,name,email

Uma API boa é aquela que o consumidor consegue adivinhar o endpoint sem ler a documentação. Consistência é a base.