Detectar esquema de versionamento de API pela URL
Um endereço cujo caminho começa com v1 usa versionamento por caminho, versão 1, localizada em /v1. Cole qualquer endereço para saber se a versão está no caminho, depois do ponto de interrogação ou só nos cabeçalhos, útil para gateways e documentação. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Endereço web
- https://api.example.com/v1/users
- Esquema
- path_based
- Versão
- 1
- Versão bruta
- v1
- Local
- /v1
Quando a versão aparece no caminho ou na consulta, ela é extraída e devolvida com o token bruto e a localização correspondente.
Três lugares onde um serviço web guarda a versão
Os serviços web anunciam a versão de jeitos diferentes. O mais comum é um trecho do caminho, como v2 entre barras, no próprio endereço. Outro é uma chave depois do ponto de interrogação que traz o número, por exemplo uma versão com valor 2. O terceiro deixa o endereço limpo e espera que a versão siga à parte, nos cabeçalhos. Cole um endereço completo e o detector diz qual dos três estilos ele usa e, quando a versão está visível, qual é e onde apareceu. Um endereço cujo caminho começa com v1, seguido de users, é classificado como versionamento por caminho, versão 1, com o texto original v1 e a localização /v1.
O que o detector verifica e o que ele nunca faz
Só são aceitos endereços completos que começam com http ou https; qualquer outra coisa é recusada em vez de adivinhada. As chaves depois do ponto de interrogação são comparadas sem diferenciar maiúsculas, e vence a primeira de uma lista fixa de prioridade que tiver valor, então a ordem dos itens não muda a resposta. Uma versão escrita como v2 é normalizada para 2, enquanto 1.0.0 continua igual e palavras como beta ou uma data como 2024-01-01 ficam como estão. O detector nunca se conecta ao serviço nem inventa uma versão pelo nome do servidor, por isso o mesmo endereço sempre dá a mesma resposta.
Como se distinguem os esquemas por caminho, consulta e cabeçalho implícito
Também reconhece a forma de dois segmentos version/1 ou versions/2.0 para que rotas no estilo de documentação ainda sejam classificadas corretamente. As chaves são comparadas sem distinguir maiúsculas; vence a primeira da lista de prioridade fixa com valor não vazio, de modo que o resultado permanece estável independentemente da ordem dos parâmetros na URL original. Os valores podem ser 2, v2 ou 1.0.0; um v inicial é removido no campo version normalizado quando o token é puramente numérico com pontos opcionais.
Tokens alfanuméricos livres como beta ou 2024-01-01 são mantidos como estão se corresponderem a um padrão de identificador seguro. O detector nunca faz E/S de rede e nunca inventa uma versão só a partir do hostname.
Perguntas frequentes
O que conta como versionamento por caminho?
Um segmento de caminho que combine com v mais uma versão numérica (v1, v2.0) ou a forma version/1 ou versions/2.0.
O que significa não encontrar versão no endereço?
O resultado indica versionamento por cabeçalhos: nem o caminho nem a parte depois do ponto de interrogação trazem marca de versão. Esses serviços costumam esperar a versão nos cabeçalhos ou não a colocam no endereço.
A ordem dos itens depois do ponto de interrogação importa?
Não. As chaves são comparadas sem diferenciar maiúsculas e vence a primeira de uma lista fixa de prioridade que tiver valor, então o mesmo endereço dá a mesma resposta em qualquer ordem.
O que acontece com versões escritas como v2 ou 1.0.0?
O v inicial é removido quando o resto tem só dígitos e pontos, então v2 vira 2 e 1.0.0 continua igual. Palavras como beta ou uma data como 2024-01-01 ficam como estão.
A ferramenta acessa o endereço que eu colo?
Não. Ela só lê o texto do endereço e nunca se conecta ao serviço. Também não deduz uma versão pelo nome do servidor, então um endereço sem marca é informado como tal.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/api-versioning-scheme-detect \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://api.example.com/v1/users"}'const res = await fetch("https://api.kit.forhosting.com/dev/api-versioning-scheme-detect", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://api.example.com/v1/users"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/api-versioning-scheme-detect",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://api.example.com/v1/users"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/api-versioning-scheme-detect", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://api.example.com/v1/users"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://api.example.com/v1/users"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/api-versioning-scheme-detect", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"url": "https://api.example.com/v1/users"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.api_versioning_scheme_detect",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
APIs HTTP públicas anunciam o estilo de versionamento em lugares diferentes: um segmento de caminho como /v2/, uma query string como ? api_version=2, ou em nenhum lugar da URL quando se espera que os clientes enviem Accept ou cabeçalhos personalizados. Integrações, gateways, geradores de SDK e rastreadores de documentação precisam de uma resposta determinística única sobre qual esquema um endpoint usa e qual token de versão carrega. Esta capacidade aceita uma URL absoluta de API, rejeita strings que não sejam URL http ou https bem formadas e classifica o esquema como path_based, query_param ou header_implied. Se nem o caminho nem a consulta contiverem um marcador convencional, o resultado é header_implied com has_version false, sinalizando que o versionamento fica fora de banda em relação à URL.
Como se distinguem os esquemas por caminho, consulta e cabeçalho implícito
O versionamento por caminho é a convenção REST dominante: um segmento como v1, v2 ou v1.2.3 aparece no pathname, muitas vezes sob /api/ ou como o primeiro segmento significativo após o host. Este detector percorre os segmentos da esquerda para a direita e trata uma correspondência, sem distinguir maiúsculas, de v seguida de versão numérica como path_based, devolvendo a parte numérica como version e o segmento original como version_raw com location apontando para esse segmento (por exemplo /v2). O versionamento por parâmetro de consulta coloca o token na string de busca sob chaves comuns: version, api_version, api-version, apiversion, ver e v. Quando caminho e consulta coincidiriam, path_based tem prioridade porque a documentação REST pública quase sempre trata o segmento de caminho como contrato principal e a consulta como sobreposição secundária. Se nenhuma fonte fornecer versão, o esquema é header_implied: a URL sozinha não codifica versão, o que em APIs modernas costuma significar Accept: application/vnd.example.v1+json, um cabeçalho X-API-Version personalizado ou uma superfície sem versionamento.
Contrato de entrada, carga de sucesso e erros de validação
Exemplo: https://api.example.com/users? Envie por POST um corpo JSON com um único campo string obrigatório chamado url. O valor deve ser uma URL absoluta bem formada com esquema http ou https; caminhos relativos, hostnames sem esquema, strings vazias, tipos que não sejam string e outros protocolos como ftp ou mailto falham com invalid_input e não são cobrados. Em caso de sucesso a resposta sempre inclui a url ecoada, scheme (path_based, query_param ou header_implied), has_version (booleano), path (pathname) e host. Quando has_version é true, a carga também inclui version (token normalizado), version_raw (como na URL) e location (um ponteiro curto como /v2 ou ? api_version=2). Em resultados query_param, param_name registra a grafia original da chave na URL. Campos opcionais são omitidos em vez de nulos quando has_version é false, mantendo o contrato seguro para o DOM e fácil de renderizar. Exemplo: https://api.example.com/v2/users produz scheme path_based, version 2 e location /v2. api_version=2 produz scheme query_param, version 2 e param_name api_version. Exemplo: https://api.example.com/users sem marcadores de versão produz scheme header_implied e has_version false. Use a ferramenta gratuita do navegador para uma inspeção pontual, ou a API a US$ 0,002 por item bem-sucedido ao classificar endpoints em lote a partir de um inventário ou de um rastreio OpenAPI.
Onde a detecção de versionamento na URL vale a pena
Equipes de plataforma inventariam centenas de URLs base internas e de parceiros e precisam de um rótulo consistente antes de rotear o tráfego por um gateway que impõe janelas de depreciação. Validação falha não consome saldo. Geradores de SDK e ferramentas de scaffolding de clientes ramificam templates conforme o servidor espera /vN/ no caminho, um flag de consulta ou só versionamento por cabeçalho; um classificador puro evita regexes frágeis espalhadas por repositórios. Sites de documentação e marketplaces de API mostram selos do estilo de versionamento ao lado de cada listagem; alimentá-los com este endpoint alinha o texto de marketing à forma real da URL. Revisões de segurança e conformidade costumam perguntar se hosts de produção ainda expõem caminhos sem versão ou esquemas mistos que complicam o rollout de mudanças incompatíveis; exportar scheme e has_version para uma planilha responde em um único passo. Jobs de CI podem reprovar um pull request quando a URL base de um serviço novo muda em silêncio de path_based para header_implied sem um ADR. Como a implementação é parse puro de tier A, cada chamada bem-sucedida custa o preço base publicado US$ 0,002, sem tokens de modelo e sem fetch do host alvo.
Casos de integração
Inventário de API e roteamento em gateway
Classifique URLs base de um catálogo de serviços como path_based, query_param ou header_implied antes de aplicar políticas de depreciação e regras de roteamento.
Scaffolding de SDK e clientes
Escolha o template de URL correto ao gerar SDKs: injete /vN/, acrescente ?version= ou documente cabeçalhos Accept obrigatórios quando a URL não carrega versão.
Selos de documentação e auditorias de conformidade
Rotule listagens públicas de API com o estilo de versionamento e sinalize hosts de produção sem versão em revisões de segurança ou arquitetura.
Perguntas técnicas
Como detectar o esquema de versionamento de uma API a partir de uma URL?
Envie uma URL http(s) absoluta bem formada no campo url. O scheme da resposta é path_based, query_param ou header_implied, com version extraída quando presente no caminho ou na query string.
Quais parâmetros de consulta são reconhecidos?
version, api_version, api-version, apiversion, ver e v, sem distinguir maiúsculas e nessa ordem de prioridade. O primeiro valor não vazio produz scheme query_param.
O que significa header_implied?
Nem o caminho nem a query string carregam um marcador convencional de versão. O versionamento é transmitido por cabeçalhos (Accept, X-API-Version) ou a API não está versionada na URL.
Quanto custa detectar o esquema de versionamento de uma API?
A ferramenta do navegador é gratuita. Solicitações à API usam o saldo pré-pago do KIT a US$ 0,002 por chamada bem-sucedida; URLs inválidas ou mal formadas não são cobradas.