Solucionar problemas da GraphQL API
Corrija requisições à GraphQL API que retornam 401 ou 204, queries que a API recusa com 400 e queries que retornam um array vazio.
Uma requisição à GraphQL API pode falhar com 401 ou 204, uma query pode falhar com um 400 que indica o problema e uma query pode não retornar nenhuma linha. Os erros de autenticação e de endpoint vêm primeiro. Em seguida vêm as queries recusadas, os resultados vazios e o GraphiQL Playground. Todo erro que a API retorna é um objeto JSON com uma única chave, detail.
Uma requisição retorna 401 com Authentication credentials were not provided
Uma requisição a um endpoint da GraphQL API retorna HTTP 401 com este corpo:
A requisição não tem o header Authorization, ou envia o token com o esquema Bearer. A API trata um header Bearer como um header ausente.
- Envie o esquema Token: adicione o header
Authorization: Token [TOKEN VALUE]a toda requisição, com o valor do seu personal token. - Confira o nome do header: o header é
Authorization, e a palavra do esquema,Token, vem antes do valor, separada dele por um espaço.
A query { __typename } então retorna HTTP 200 com "__typename": "Query".
Uma requisição retorna 401 com Invalid Token
Uma requisição com um header Authorization: Token retorna HTTP 401 com este corpo:
O header usa o esquema correto, mas a API não aceita o valor dele como um personal token.
- Copie o token inteiro: cole o valor completo do personal token depois da palavra
Tokene de um espaço, sem aspas. - Crie outro personal token: se você não tem mais o valor, crie um personal token no Azion Console. Para os passos, consulte Como criar um personal token.
A requisição então retorna HTTP 200 com um objeto data.
Uma requisição retorna 204 com o corpo vazio
Uma requisição POST com um token válido retorna HTTP 204 sem corpo, em vez de um erro.
A URL não é um dos endpoints da GraphQL API. Um caminho desconhecido em https://api.azion.com/v4/ responde 204, não 404.
- Use um dos cinco endpoints: cada endpoint atende uma família de dados. Envie a query para o endpoint que contém o dataset dela:
A requisição então retorna HTTP 200 com um objeto data, ou um 400 que indica o problema na query. Para os datasets de cada endpoint, consulte Datasets e argumentos de query.
Uma query falha com Cannot query field workloadEvents on type Query
Uma query em um dataset de eventos, como workloadEvents, retorna HTTP 400 com este corpo:
A query foi enviada para o endpoint de métricas, que atende apenas datasets de Metrics. A mesma mensagem aparece para um dataset com o nome escrito errado, como workloadMetric.
- Envie queries de eventos para o endpoint de eventos: envie
workloadEventse os outros datasets de eventos parahttps://api.azion.com/v4/events/graphql. - Confira o nome do dataset: a lista
Did you meanda mensagem indica os datasets que aquele endpoint atende.
Esta query, enviada para o endpoint de eventos, retorna as requisições mais recentes de uma janela de 7 dias:
A resposta contém um objeto por requisição. Ela foi cortada depois da terceira de 5 linhas:
A query retorna HTTP 200 com os registros da janela.
Uma query falha com The query has reached a system limit
Uma query de eventos retorna HTTP 400 com este corpo:
A query ultrapassa um limite do endpoint de eventos. Duas causas retornam essa mensagem: 37 ou mais campos selecionados em workloadEvents, ou uma janela de 7 dias em functionConsoleEvents.
- Selecione no máximo 36 campos em workloadEvents: remova campos até a query selecionar 36 ou menos. Em um dataset de Metrics, o limite é de 37 campos. O 38º campo retorna
You have exceeded the limit amount allowed for selected fields (37 fields). - Encurte a janela nos eventos de console: consulte
functionConsoleEventsem uma janela mais curta, como uma hora. O datasetcellsConsoleEvents, obsoleto, retorna o mesmo erro; usefunctionConsoleEvents.
A query então retorna HTTP 200. Para todos os limites dentro dos quais uma query é executada, consulte Limites da GraphQL API.
Uma query falha com The query includes fields that require grouping
Uma query de Metrics retorna HTTP 400 com este corpo:
A query seleciona uma medida, como requests, sem agregá-la. Uma medida vai no argumento aggregate, e a resposta retorna o resultado dela em um campo com o nome da função.
- Agregue a medida: mova a medida para
aggregate, comoaggregate: { sum: requests }, e selecionesumno lugar derequests. - Agrupe pelos outros campos: liste em
groupBytodo campo selecionado que não é um agregado.
Esta query soma as requisições de uma janela de 7 dias por intervalo de tempo:
A resposta contém uma linha por intervalo e é cortada depois da terceira linha:
A query retorna HTTP 200 com um sum por grupo.
Uma query de resample falha com Query syntax error
Uma query com um argumento resample retorna HTTP 400 com este corpo:
O argumento groupBy da query não contém ts, que toda query de resample exige.
- Agrupe por ts: adicione
tsagroupBye selecionetse todos os outros campos degroupBy. - Faça o resample de um dataset de Metrics:
resampleexiste apenas em datasets de Metrics. Em um dataset de eventos, a API retornaUnknown argument "resample".
Esta query faz o resample das requisições de uma janela de 7 dias para 10 pontos:
A resposta contém uma linha por ponto. Ela foi cortada depois da terceira de 11 linhas:
A query retorna HTTP 200 com os pontos após o resample. Para as funções de resample, consulte Datasets e argumentos de query.
Uma query falha com The start and end dates must have the same timezone
Uma query retorna HTTP 400 com este corpo:
Um limite da janela de tempo tem um fuso horário e o outro não tem, como Z apenas em begin.
- Use o mesmo offset nos dois limites: escreva as duas datas com o mesmo offset, como
-03:00, ou as duas sem offset. A API converte as duas para UTC.
Esta query lê uma hora com o offset -03:00 nos dois limites:
A resposta retorna os intervalos em UTC:
A query retorna HTTP 200 com os timestamps em UTC.
Uma query retorna um array vazio
Uma query retorna HTTP 200, mas o array do dataset não contém nenhuma linha:
Nenhuma linha corresponde à janela e aos filtros. A API não retorna erro quando a janela está invertida ou não contém dados.
- Confira a ordem dos limites:
beginprecisa vir antes deend. Uma janela invertida retorna um array vazio. - Mova a janela para dentro da retenção: os registros de eventos são mantidos por cerca de 7 dias, então uma janela maior não retorna nada para a parte que fica fora desse período.
workloadBreakdownMetricsmantém 90 dias de dados. Para a retenção de cada dataset, consulte Como a GraphQL API funciona. - Substitua datas copiadas: uma query de exemplo com datas de um ano anterior retorna um array vazio. Defina a janela para um período com tráfego.
- Confira se a conta tem dados: um dataset sem tráfego na conta retorna um array vazio.
A query retorna linhas assim que a janela contém dados que correspondem aos filtros.
O GraphiQL Playground retorna Authentication credentials were not provided
Uma URL de endpoint aberta em um navegador mostra HTTP 401 com este corpo, em vez do GraphiQL Playground:
A requisição do navegador não traz nenhuma sessão nem nenhum token.
- Faça login no Azion Console primeiro: faça login no Azion Console no mesmo navegador e então abra a URL do endpoint.
- Abra uma URL de endpoint: o Playground é executado nas cinco URLs de endpoint, como
https://api.azion.com/v4/metrics/graphql. A raiz da API,https://api.azion.com/v4, abre a referência da REST API. - Envie o header do token: uma requisição
GETcomAccept: text/htmleAuthorization: Token [TOKEN VALUE]retorna o GraphiQL com HTTP200.
A URL do endpoint então abre o GraphiQL. Para o Playground, consulte GraphiQL Playground.