Concrete Logo
Hamburger button

Diferenças de nomes de campos em chamadas e o impacto da API

  • Blog
  • 28 de Março de 2016
Share

Recentemente, o pessoal da equipe da API de um cliente aqui da Concrete Solutions pediu alteração de alguns campos que não estavam bons. Como esse pedido pode ser comum, resolvi explicar em um post o que acontece quando alteramos os nomes dos campos e qual é o impacto que a API causa ao código. Vamos lá?

Imagine que você tenha uma chamada GET que te retorna um JSON com quatro variáveis:

Para usar essas informações, você usa um método chamado Parse. O que ele faz? Traduz esse JSON em um objeto com as variáveis que são necessárias. Ou seja, esse objeto agora tem as quatro variáveis (vou usar um pseudo código como exemplo):

Imagine agora que mais para a frente você precise fazer um POST destes mesmos valores para executar uma ação no sistema. Para isso, você usa outra função, chamada de JSONDictionaryFromModel. Ela retorna um dicionário com as mesmas chaves originais do JSON para o envio no POST, enviando os valores corretos.

Mas e se em outro momento ela recebesse o mesmo JSON com uma chave diferente, contendo o mesmo valor? Algo como:

Nesse caso, o Parse não reconhece a diferença. Ele falha em obter o valor, e teríamos um objeto assim:

Para contornar esse problema, podemos criar uma nova variável para contemplar o caso em que a chave é “rua” ao invés de “logradouro”. Assim, geramos esse objeto:

E o que acontece se quisermos fazer aquele POST ou outro POST que use as informações do nosso objeto usando nosso método de conversão? Nosso POST vai retornar um erro, pois o parâmetro não foi enviado em “logradouro”, mas nulo.

Ou seja, o parâmetro “rua”, mesmo que tenha sido enviado, não é o parâmetro que o POST espera. Para ajustar esse problema podemos deixar a variável dentro de um if antes de fazer o POST, dessa forma:

Entretanto, vale dizer que essa forma não é aceitável, pois gera objetos com variáveis duplicadas. Quando um POST for enviado, ele enviará duas variáveis de chaves diferentes, com valores duplicados, e essa mensagem pesará mais. Além disso, não é uma boa prática. O código perde qualidade e os desenvolvedores podem perder um bom tempo para descobrir o problema.

Portanto, pense bem antes de alterar os nomes dos campos para chamadas na API, ok?

Ficou alguma dúvida, tem alguma sugestão ou crítica? Aproveite os campos abaixo. Até a próxima!