Histórico da Página
...
Bloco de código | ||
---|---|---|
| ||
GET https://fluig.totvs.com.br/api/users?order=name,-age,surname |
Informações | ||
---|---|---|
| ||
Se um tipo de ordenação é usado constantemente ou é complexa demais para definir como parâmetros na pode-se considerar criar um endpoint para representá-la desde que essa siga as boas praticas na definição da URI. |
Filtros
As coleções podem suportar filtro e deve usar as técnicas abaixo de acordo com a complexidade exigida pela função:
Filtros simples
Filtros simples devem usar parâmetros de query que suportarem filtro devem suportar parâmetros no formato propriedade=filtro e as propriedades suportadas e como elas serão interpretadas devem estar listadas na documentação do endpoint. Ex:
Bloco de código | ||
---|---|---|
| ||
GET https://fluig.totvs.com.br/api/users?name=john&surname=doe//fluig.totvs.com.br/api/users?name=john&surname=doe |
Filtros complexos
Filtros complexos e que forneçam uma linguagem de filtro devem seguir o padrão definido para os filtros no documento ODATA na versão 4.
Filtros como ações
Além das opções acima é possível definir um filtro como uma ação e usar o método POST. Neste caso a url deve seguir as boas praticas para não poluir as URIs da API.
Paginação
Todos os endpoints de coleção devem suportar paginação. A definição de como a coleção deve ser paginada é definida pelos parâmetros de url page e pageSize respeitando as seguintes regras:
...
- O parâmetro pageSize é opcional e na sua ausência deve ser considerado usado o valor padrão definido pela linha de negócio do endpoint (20 por exemplo). Não devem ser retornados todos os registros da consulta;
- Os parâmetros de paginação devem obedecer a semântica de multiplicador, ou seja, se o cliente solicitou page=2 com um pageSize=20 deve-se retornar os registros de 21 até 40;
...
Para todas as mensagens que representam um erro (códigos HTTP 4xx e 5xx) deve-se retornar obrigatoriamente os campos a seguir:
Bloco de código | |||
---|---|---|---|
| |||
{{ code: "Código identificador do erro", helpUrlcode: "link para a documentaçãoCódigo identificador do errorerro", message message: "Literal no idioma da requisição descrevendo o erro para o cliente", detailedMessage: "Mensagem técnica e mais detalhada do erro" } |
...
Informações |
---|
Todos os códigos de error devem estar mapeados e listados na documentação da API. |
- O campo helpUrl deve apontar diretamente para documentação do erro na API;O campo message deve descrever o erro de forma não técnica e pode ser usado pelos clientes para exibição ao usuário. O texto deste campo deve respeitar o idioma usado na requisição (definido pelo cabeçalho Accept-Language ou o padrão caso este não seja especificado). Além disso leve em consideração:
- Não assuma que o usuário é um especialista no uso da sua API. Usuário podem incluir desenvolvedores, profissionais de TI, administradores e usuários finais;
- Não assuma que o usuário saiba qualquer coisa sobre a implementação da função sendo exposta pelo endpoint;
- Quando possível a mensagem deve ser construida de forma que um usuário técnico possa responder ao erro e corrigi-lo;
- Mantenha a mensagem sucinta e, se necessário, inclua um link para a documentação de como corrigi-la.
- O campo detailedMessage deve descrever o erro de forma mais técnica e pode conter referências que ajudem na correção / localização do erro no contexto do servidor do fluig.
Opcionalmente pode-se retornar os campos:
- helpUrl: link para a documentação do error;
- details: Uma lista de objetos de erro (recursiva) com mais detalhes sobre o erro principal.
Exemplo:
Informações |
---|
Em alguns casos se faz necessário retornar mais campos do que os estipulados acima. Nestes casos a informação deve ser considerada opcional do ponto de vista do cliente, ou seja, o cliente não deve depender dela para o tratamento do erro. |
...