Executando verificação de segurança...
1

Usando http client do Intellij

Ao desenvolver ou utilizar uma api rest, costumeiramente é necessária a utilização de um http client (curl, Postman, Insomnia etc) que facilite a edição das requisições http.

Há pouco tempo, eu utilizava o Postman, mas algumas coisas dele me incomodavam:

  • Dificuldade para encontrar requisições salvas
  • Não versionar as requisições junto com o código
  • Ser mais uma janela aberta
  • Lidar com múltiplus ambientes onde roda-se a mesma aplicação

Assim, comecei a utilizar o cliente http presente no próprio Intelij, o que tornou meu desenvolvimento mais fluído.

COMO USAR

Para utilizar, basta criar um arquivo no projeto de extensão .http. A partir daí, basta começar a escrever as requisições de acordo com a sintaxe.

Ter que escrever requisições em texto puro pode assustar alguns devs (e animar outros). Uma forma de poupar um pouco de trabalho é utilizar a opção "Generate Request in HTTP Client", embora isso só gere o endpoint e o verbo http.

Multiplas requisições podem ser criadas no mesmo arquivo, e serem executadas seperadamente (assim como arquivos .sql)

MÃO A MASSA

A requisição mais simples ao qual estamos acostumados são GET para leitura de todos os valores, não especificando parâmetros. Um exemplo disto se encontra abaixo:

### List taggedObjects in default namespace
GET http://{{tagger-host}}/tagger/taggedObject

Embora esse cliente não ofereça ferramentas para lidar com os parâmetros passados pela url, na maioriados casos uma quebra de linha é o suficiente para organizar o código:

### List enriched taggedObjects in smart-grid namespace
GET http://{{tagger-host}}/tagger/taggedObject
    ?namespace=smart-grid
    &enrich=true

Para requesições POST e PUT, que corriqueiramente necessitam de headers e bodies, podem ser complementadas adicionando um header por linha imediatamente após sua declaração, e ao pular uma linha em branco, o body pode ser explicitado:

POST http://{{tagger-host}}/tagger/taggedObject/tagExpression
Content-Type: application/json

{
  "expression": "not(block:academic and circuit:lifts)",
  "namespace": "smart-grid",
  "type": "Resource",
  "enrich": "true"
}

Parametrizando

Em todos exemplos acima, o nome do host foi substituído por {{tagger-host}}. Isto porque existem 3 ambientes onde costumo ter essa aplicação rodando (No próprio Intelij, num k8s local e em um k8s remoto).
. Utilizando variáveis é possível editar tais requisições para lidar com os 3 ambientes.

ATENÇÃO: Nesse sentido, é interessante versionar e taggear os commit. Pois permite lidar com diferentes versões da mesma aplicação.

Para especificar os possíveis parâmetros, clique em Add environment file:

{
  "dev": {
    "tagger-host": "localhost:8180",
    "outra-variavel": "xxxxxxx"
  },
  "outro-ambiente": {
    "tagger-host": "exemplo.com",
    "outra-variavel": "yyyyyyy"
  }
}

Conclusão

O cliente http do Intelij é uma ferramenta simples, sem muitos recursos avançados. Para alguns perfis de desenvolvedores(e administradores de sistemas) isso é uma qualidade. Ainda assim, existem recursos muito úteis (como validação e auxílio para edição de json, possibilidade de parametrização e conversor para curl).

No uso coditiano, tem se mostrado uma boa forma de mostrar a equipe como utilizar certo endpoint recém desenvolvido.

Carregando publicação patrocinada...
1

Muitos anos usei o Eclipse ou o IntelliJ Community. No projeto atual tive acesso ao Ultimate e me deparei com 2 plugins nativos que estou usando demais: o citado acima e o de banco de dados preferencialmente para PostgreSQL.
Tenho gostado muito.

Em relação ao Http Client. Eu estou conseguindo organizar os assuntos das requests por arquvos http. E criei 2 arquivos de variáveis: 1 que ficam os hosts e outras coisas. E outro somente para os tokens.

O legal que podemos reutilizar os scratches (nome q o IntellJ dá aos arquivos de request http, consoles de banco etc) em diversos projetos.

Por motivos do cliente desenconrajar o uso do Postman alegando questões de privacidade, eu resolvi dar uma chance para o HTTP Client e estou gostando muito. Fica tudo exposto via texto.

Vejo que ainda tem muitas coisas a melhorar e avançar mas já é uma solução que atende a grande maioria dos meus problemas comuns.