Fonte de dados tipo Web Service (REST / SOAP)
As Fontes de dados do tipo Web Services necessitam de algumas configurações a mais em relação aos demais tipos (Consulta a Entidade, Bloco de programação e SQL Nativo), essas configurações são necessárias para adaptar a comunicação entre a Fonte de dados e a API externa. Quando algum recurso da aplicação Cronapp necessita de algum dado, ele solicita a Fonte de dados (destaque 1 da figura 1), que por sua vez direciona essa requisição no padrão que a API externa reconheça (2), recebe uma resposta (3), trata e retorna o conteúdo ao componente que fez a solicitação (4).
Figura 1 - Fluxo de comunicação entre um componente, Fonte de dados e API
Qualquer Fonte de Dados, independentemente de seu tipo, pode ser utilizada como um recurso REST. Essa abordagem para as Fontes de dados do tipo Web services permite disponibilizar uma API para os usuários de sua aplicação, atuando como uma camada intermediária que se comunica com outra API externa. Essa estratégia pode ser valiosa por várias razões, tais como:
Ocultação do serviço externo: como cria uma camada intermediária, impossibilita o usuário identificar o recurso externo utilizado.
Abstração de serviços externos: oculta a complexidade dos serviços externos, tornando a integração mais acessível e transparente para os usuários da sua aplicação.
Controle de autenticação e autorização: personaliza o tipo de autenticação e as permissões de acesso (permissionáveis) para se adequar aos requisitos de segurança do seu projeto.
Transformação de dados: modifica a estrutura dos campos dos objetos, adaptando-os às necessidades específicas da sua aplicação.
Documentação automática: aproveita recursos de documentação automática, como o Swagger - OpenAPI, e outros associados à Fonte de Dados, para simplificar o processo de documentação da API.
Utilizar Fontes de Dados como recursos REST garante flexibilidade e controle, permitindo que você ajuste e otimize a integração de serviços externos de acordo com os requisitos do seu projeto.
Se a API requisitada segue as especificações OpenAPI (OAS), recomendamos utilizar nossa ferramenta para Importar OpenAPI/Swagger, com ela será possível configurar ao mesmo tempo vários recursos de uma mesma API, gerando blocos de programação e Fonte de dados.
Importante destacar que a ferramenta Importar OpenAPI/Swagger só irá gerar Fonte de dados para os recursos GET, sendo necessário seguir os passos dessa documentação para configurar os demais verbos.
Veremos alguns exemplos de como configurar a Fonte de dados para receber recursos no padrão REST e SOAP. Para outros detalhes, acesse a documentação da Fonte de dados.
Definição inicial
De modo a simplificar os exemplos apresentados nessa documentação, vamos assumir algumas nomenclaturas para os endereços de APIs utilizadas nessa documentação.
Figura 1.1 - Exemplo de estrutura de endereço para uma API
Domínio: endereço base onde a API está hospedada. Para essa definição, o domínio pode ou não conter subdomínios. Ex:
https://subdominio.dominio.com.brURL base: ponto de partida comum (domínio e parte da rota) para todos os recursos de uma determinada API. Muitas APIs não possuem uma rota fixa para agrupar vários de seus recursos, nesses casos, a URL base será o próprio domínio.
Rotas: especifica o caminho final do endereço para um recurso.
Endpoint: é a combinação da URL base (domínio), rota e, opcionalmente, query string que define uma operação específica na API.
Query string: define um ou mais parâmetros, no formato
chave=valor, para o recurso.
Web Service - REST
Antes de criarmos uma Fonte de dados REST, precisamos ter em mãos o endpoint (verbo HTTP GET) do serviço que iremos usar e, em seguida, realizar os passos abaixo:
Obter campos do serviço: executa alguns passos para obter os campos do objeto.
Aba Ações: configura os demais métodos do serviço e seus parâmetros. Os recursos de paginação e ordenação devem ser configurados aqui.
Aba Campos: se necessário, é possível personalizar os campos obtidos na primeira etapa.
Aba Cabeçalho: se necessário, é possível configurar o cabeçalho da requisição.
Nova Fonte de dados
Para criar a Fonte de dados, acesse o Botão do menu do sistema > Fonte de dados (destaque 1 da figura 2) e após abrir a janela, clique no botão Nova Fonte de dados (destaque 2).
Figura 2 - Criando uma Fonte de dados
Passos para obter campos do serviço
Com a janela da Fonte de dados aberta, preencha os campos Identificador e Nome da consulta, em seguida, selecione a opção Web Services (destaque 1 da figura 2.1) e informe o endereço do endpoint REST (verbo Get) no campo ao lado (destaque 2), por fim, clique no botão Obter campos do serviço (destaque 3) para abrir a janela de configuração.
Figura 2.1 - Informando o endpoint e iniciando a configuração
Durante os passos a seguir, o Cronapp tentará obter todas as informações automaticamente, necessitando apenas que o usuário avance as telas até finalizar. Os dados obtidos podem ser modificados durante ou após o processo.
Após obter os campos do objeto nos passos a seguir, é possível alterar o endereço principal (destaque 2 da Figura 2.1) da Fonte de dados, isso permitirá definir rotas dinâmicas ou configurar um endpoint para cada verbo HTTP (veja detalhes no tópico Aba Ações).
Passo 1
A primeira janela exibe os campos necessários para realizar a requisição.
Os cabeçalhos adicionados nessa janela serão utilizados apenas para obter campos do serviço, após essa etapa, acesse a aba Cabeçalho para configurar os cabeçalhos em definitivos.
Se o endpoint incluído possuir parâmetros (Ex.: "https://meusistema.com/api/:<parâmetro>/user") em seu endereço, os campos de parâmetros também serão exibidos aqui. Veja mais detalhes no tópico Requisição personalizada.
Figura 2.2 - Configuração da URL e Cabeçalhos
URL: endpoint do verbo Get que informamos no passo anterior (destaque 2 da figura 2.1).
Novo Cabeçalho: se o recurso REST necessita de cabeçalhos próprios, como os de autenticação (exemplos:
authorizationoux-auth-token), é possível informar o nome do cabeçalho e adicioná-lo à lista clicando no ícone (+).Lista de cabeçalhos: essa lista aceita apenas valores estáticos, após obter os campos, utilize a aba Cabeçalho para configurar os cabeçalhos com valores dinâmicos,
Clique em Avançar.
Passo 2
Na próxima tela (Figura 2.3), o campo Resultado exibirá o retorno da requisição e o Cronapp tentará preencher automaticamente os dois primeiros campos. Esses campos podem ser editados posteriormente na aba Ações.
Para Obter: esse campo deve conter o caminho JSON até o atributo que contém a lista com os objetos.
Para Contar: esse campo deve conter o caminho JSON até o atributo que contém o número total de registros, usado para realizar a paginação do conteúdo.
Resultado: retorno da requisição.
Figura 2.3 - Localizando os dados no JSON
Nem todos os serviços trazem um campo no resultado que represente o total de registros. Logo, o preenchimento do Para Contar não é obrigatório. Sendo assim, o Cronapp considerará o total de registros como o total de dados retornados e pode não fazer a paginação corretamente.
O caminho JSON (JSON Path) é uma notação utilizada para navegar em uma estrutura JSON. O objeto principal é definido com o símbolo dólar ($), o colchete ([]) é utilizado para selecionar um elemento em uma lista e o ponto ( . ) é utilizado para acessar um objeto vinculado a um atributo.
Utilizando como exemplo a figura 2.3, para obtermos o nome do usuário do primeiro elemento do array, usaríamos o endereço: $.data[0].name
Clique em Avançar.
Passo 3
Após identificar a lista de objetos no passo anterior, o Cronapp exibirá um objeto com todos os seus campos em Resultado (Figura 2.4).
Resultado: primeiro objeto da lista.
Contagem: exibe o total de registros com base no atributo informado no campo Para Contar (Figura 2.3).
Chaves: o Cronapp tentará identificar qual a chave do objeto, porém, clicando no campo (figura 2.4), é possível escolher, manualmente, os campos chaves. Essa configuração poderá ser feita depois na aba Campos.
Figura 2.4 - Configuração dos identificadores do objeto
Lembramos que, para o correto funcionamento da Fonte de dados, o campo que representa a chave (ou conjunto de campos) deve identificar o registro de forma única na listagem, caso você queira atualizar e remover registros do serviço.
Clique em Avançar.
Passo 4
A janela a seguir permite ajustar os campos já mapeados pela Fonte de dados ou adicionar Novos Campos. Informe na coluna Caminho o JSON Path do atributo que alimentará esse campo. Essa configuração poderá ser feita depois a partir da aba Campos.
Figura 2.5 - Configuração manual dos campos do serviço REST
Na maioria das vezes não é necessário realizar qualquer ação nessa janela.
Clique em Avançar.
Passo final
A última janela exibirá um objeto completo, com as configurações feitas até aqui. Clique em Finalizar para retornar as configurações da Fonte de dados.
Figura 2.6 - Resultado final
Após Finalizar, a aba Campos será exibida com todos os atributos configurados.
Obter campos com e sem metadados
Se o endpoint usado pertencer a uma Fonte de Dados (OData) de outro projeto Cronapp, e esse projeto estiver configurado com a opção "Expor Metadados" ativada nas Configurações do Projeto, ao tentar acessar o recurso, a janela Obter campos do serviço será capaz de extrair os metadados do projeto de origem. Isso permitirá acessar informações detalhadas sobre os campos, como tipos de dados, se eles aceitam valores nulos, quais são os campos chave e a definição do campo "ObjectKey".
No caso de serviços externos sem metadados, a janela Obter campos do serviço irá identificar os campos dos objetos retornados e inferir quais os tipos desses campos (exemplo: String, Boolean, Date, ...), porém, nem sempre isso é possível, nesses casos, o desenvolvedor pode ajustar esses atributos na aba Campos.
Requisição personalizada
A Fonte de dados permite criar rotas dinâmica para o endpoint e adicionar chaves query string diferentes nas requisições de cada verbo HTTP. Esses parâmetros são configuráveis na aba Filtro (acesse o tópico "Aba Filtro" da documentação Fonte de Dados).
Rotas
Para definir rotas dinâmicas a partir dos parâmetros informados à Fonte de dados, basta substituir parte do endereço (ou o endereço inteiro) pela expressão ":<parâmetro>" (dois pontos + nome do parâmetro) no endereço do endpoint (ex.: http://www.ws.com/usuario/:rotaDinamica/dados) (destaque 1 da figura 2.7), o parâmetro definido ("rotaDinamica") será criado na lista de parâmetros da aba Filtro (2). Isso permitirá que a mesma Fonte de dados faça requisições para endereços diferentes, mudando o parâmetro informado.
Vale ressaltar que os endereços montados devem ser compatíveis com as demais configurações da Fonte de dados: abas Cabeçalhos, Campos e Ações.
Figura 2.7 - Incluindo parâmetros para tornar a URL Base dinâmica
No exemplo da figura 2.7, ao executar a Fonte de dados informando um valor para o parâmetro "rotaDinamica" (ex.: post), o endpoint será montado da seguinte forma: https://meusistema.com.br/post/comentarios
Se existir parâmetros na URL base durante os passos para obter campos do serviço, esses parâmetros serão exibidos no passo 1.
Query String
Na aba Ações da Fonte de dados é possível configurar parâmetros Query String que serão incluídos nas requisições de cada verbo HTTP. Assim, após o endereço do endpoint será adicionado o caractere "?" (interrogação) para informar onde começa a lista com os parâmetros (Chave=Valor) e, entre cada parâmetro, será adicionado o caractere separador "&" (ampersand),
No exemplo da figura 2.8 foram configurados 2 parâmetros querystring para as requisições Para Obter (GET): postid e id.
O valor do parâmetro "id" (destaque 2) foi definido de forma estática, sendo assim, em todas as requisições GET dessa Fonte de dados, o valor do "id" sempre será "21".
Figura 2.8 - Adicionando parâmetros queryString a uma requisição REST
A querystring "postId" (destaque 1 da figura 2.8) foi configurada de forma dinâmica a partir de um parâmetro da Fonte de dados nomeado como "identificadorPost", esse parâmetro será exibido na lista de parâmetros da aba Filtro (destaque 1 da figura 2.9). Sendo assim, em todas as requisições GET feita para essa Fonte de dados será possível alimentar a querystring "idenficadorPost" que, por sua vez, alimentará a querystring "postId" da requisição montada pela Fonte de dados (destaque 2 da figura 2.9).
Figura 2.9 - Parâmetro de querystring definido nas configurações da Ação Para Obter
O endpoint abaixo é um exemplo de requisição feita para a Fonte de dados da figura 2.9 (query881058), passando o valor "101" para a querystring "identificadorPost" da Fonte de dados (destaque 1 da figura 2.9). Em seguida, a Fonte de dados realiza uma requisição à API configurada (4 da figura 2.9), incluindo as quesrystrings "id" (estática, definida no destaque 2 da figura 2.8) e "postId" (obtida a partir do parâmetro "identificadorPost", destaques 1 das figuras 2.8 e 2.9). Esse fluxo é representado pelos itens 1 e 2 da figura 1.
https://app-8-128-13357.ide.cronapp.io/api/cronapi/odata/v2/app/query881058?identificadorPost=101A mesma chave de parâmetro da Fonte de dados criada em uma Ação (exemplo Para Obter) e exibida na aba Filtro (destaque 1 da figura 2.9), pode ser utilizado em outras ações (exemplo Para Inserir).
Parâmetros do Sistema
O Cronapp também permite que o endereço de uma API possa ser montado a partir de um parâmetro do sistema. Isso pode ser útil em situações onde a API referenciada muda de domínio, gerando um endpoint diferente para os ambientes (perfis) de desenvolvimento ou produção, por exemplo.
Para configurar, basta criar um parâmetro na janela de Parâmetros do Sistema, passando como Valor, o domínio, a rota ou a parte do endpoint que deseja substituir e definir o Perfil (Figura 2.10).
Figura 2.10 - Janela de configurações dos Parâmetros do sistema
Na janela de configurações da Fonte de dados podemos substituir parte do endpoint pelo parâmetro criado, utilizando os caracteres ${} em volta, exemplo: ${domainAPI} (destaque 1 da figura 2.11). Ao executar, a Fonte de dados identificará o perfil e montará o endpoint com base no parâmetro configurado (2).
Figura 2.11 - Utilizando o parâmetro do sistema para alterar o endpoint da requisição
Aba Ações
Esse tópico apresenta recursos específicos nas ações das Fontes de dados do tipo Web services, acesse o tópico "Aba Ações" da documentação Fonte de dados para outros detalhes.
Essa aba permite configurar as rotas de comunicações entre a Fonte de dados e a API externa através dos verbos HTTP (Get, Post, Put, Delete), filtrar ou contar; definir a segurança e configurar os parâmetros de querystring usados por cada ação. Nesse momento é importante conhecer como funciona o serviço REST que será utilizado ou acessar sua documentação, pois a API pode utilizar uma mesma URL Base para todas as requisições, possuir um endpoint igual ou diferente para cada verbo HTTP. Além disso, será necessário configurar os parâmetros utilizados para filtrar, ordenar e paginar.
Por padrão, a Fonte de dados sempre inclui automaticamente o valor do identificador do registro no final do endereço da requisição para as ações Para Atualizar e Para Remover, ficando "<Endpoint>/{id}".
Como cada ação pode ter parâmetros e endpoint diferentes, toda requisição feita a uma Fonte de dados Web services em modo debug imprimirá no Console do depurador os parâmetros de querystring gerados e a URL com a requisição completa (Console do depurador, figura 3.1).
Figura 3.1 - Configuração e execução da ação Para Remover de uma Fonte de dados web services
Campo com o Endereço principal: esse endereço pode ser completo (endpoint do verbo Get) ou parcial (URL base), nesse caso, a Fonte de dado irá concatenar a URL base com a Rota definida no campo URL de cada Ação (destaque 8 da figura 3.1). Veja mais detalhes no item 8 dessa lista.
"...": abre a janela "Obter campos do serviço" para personalizar os parâmetros da requisição de cada ação.
Campo Parâmetro: nome do novo parâmetro de querystring a ser passado na requisição.
(+): inclui o novo parâmetro na lista de querystrings.
Coluna Nome: lista de parâmetros.
Coluna Valor do campo: define como será o valor a ser passado, podendo ser tipos estáticos (texto, numérico, data e hora, hora ou lógico), Bloco de programação, Parâmetro ou Expressões. Acesse o tópico "Parâmetros e constantes" da documentação Fonte de Dados para mais detalhes.
Coluna Remover: remove o parâmetro querystring selecionado.
Parâmetros fixos:
URL: substitui ou modifica o endpoint da requisição para a ação selecionada (verbo HTTP). Esse campo pode estar vazio, com um endereço relativo ou absoluto:
Campo URL vazio: se o campo URL estiver vazio, a requisição será feita a partir do endereço principal (destaque 1 da figura 3.1).
Exemplo:
Campo Endereço principal (1):https://www.ws.com.br/user
Campo URL da ação Para Obter (8): <vazio>
Requisição Para Obter (13):https://www.ws.com.br/userExemplo 2:
URL Base (1):https://www.ws.com.br/user
Campo URL da ação Para Atualizar (8): <vazio>
Requisição Para Atualizar (13):https://www.ws.com.br/user/{id}
Campo URL com valor relativo: algumas APIs possuem uma estrutura de endereço igual (URL base) e altera apenas a rota final. Assim, é possível utilizar a mesma estrutura do campo Endereço principal (destaque 1 da figura 3.1) "
<URL BASE>/" e alterar apenas o campo URL (destaque 8 da figura 3.1) para cada verbo HTTP (Ação), com a rota específica da ação (Ex.: "/list/"), gerando o endpoint completo ao final "<URL Base>/list/".Exemplo:
Campo Endereço principal (1):https://www.ws.com.br/user/
Campo URL da ação Para Obter (8):list/
Requisição Para Obter (13):https://www.ws.com.br/user/list/Exemplo 2:
URL Base (1):https://www.ws.com.br/user/
Campo URL da ação Para Remover (8):/remove/
Requisição Para Remover (13):https://www.ws.com.br/remove/{id}
Campo URL com valor absoluto: é possível informar um endpoint completo no campo URL e ignorar totalmente o endpoint no campo Endereço principal (destaque 1 da figura 3.1).
Exemplo:
Campo Endereço principal (1):https://www.ws.com.br/user
Campo URL da ação Para Obter (8):https://www.ws-2.io/list
Requisição Para Obter (13):https://www.ws-2.io/listExemplo 2:
Campo Endereço principal (1):https://www.ws.com.br/user
Campo URL da ação Para Remover (8):https://www.ws-2.io/list/{id}
Requisição Para Remover (13):https://www.ws-2.io/list/123
Caminho: o campo espera receber um JSON Path e é usado para informar qual parte do JSON recebido possui a lista de objetos (ex.:
$.data- tudo que estiver dentro do atributodatano objeto JSON). Caso não seja preenchido, será obtido todo o conteúdo da resposta da requisição.
Parâmetros: devem ser adicionados e configurados os parâmetros querystring que serão enviados juntos com o endpoint.
Parâmetro compartilhado: nos casos em que várias ações utilizam o mesmo parâmetro, é possível selecionar a opção "Parâmetro" na coluna Valor do campo (6) e informar um nome ao lado (10.a). Esse parâmetro passará a ser configurável a partir da aba Filtro da Fonte de dados (destaque 1 da figura 2.9) e todas as outras ações poderão receber o mesmo valor após selecionar a opção "Parâmetro" e informar o mesmo nome.
Copiar: permite selecionar e copiar os parâmetros da janela "Obter campos do serviço" para utilizá-los em outra ação na aba "Ações".
Colar: permite colar os parâmetros previamente copiados de outra ação, facilitando suas configurações. Esse botão só ficará disponível após a cópia de algum parâmetro.
Endereço requisitado à API: endereço da requisição montado com o que foi definido no campo URL Base (1), URL (8) e nos parâmetros passados (9 e 10),
ATENÇÂO
As ações devem ser configuradas com base na API utilizada, por isso é necessário acessar a sua documentação e verificar se a API possui suporte a todos os recursos de CRUD e também paginação, ordenação e filtro,
Nos subtópicos abaixo listamos as principais ações utilizadas e apresentamos exemplos de como configurá-las. Veja o que representa cada elemento da lista numerada nos exemplos:
Endereço principal: endereço usado para configurar a Fonte de dados (destaque 1 da figura 3.1).
Campo URL: usado para personalizar o endpoint de cada Ação em sua respectiva janela (destaque 8 da figura 3.1).
Caminho: endereço JSON (JSON Path) até a lista de objetos no retorno da requisição (destaque 8 da figura 3.1).
Método: método HTTP utilizado: GET, PUT, POST, DELETE.
Requisição final: endereço da requisição montado a partir da configuração dos campos Endereço principal (destaque 1 da figura 3.1), campo URL (destaque 8 da figura 3.1) e parâmetros de querystring (destaques 9 e 10 da figura 3.1).
Corpo da requisição enviado para a API: corpo da requisição enviado pela Fonte de dados para a API, utilizado apenas nas ações Para inserir e Para Atualizar.
Em um formulário Cronapp, o corpo do objeto da requisição é montado e enviado automaticamente pela Fonte de dados, que obtém esses dados dos campos (inputs) do formulário que estão com a propriedade Valor (ng-model) vinculada com a Fonte de dados (ex:<FonteDados>.active.nome).Corpo da requisição retornada pela API: estrutura JSON retornado pela API.
Conteúdo do caminho na requisição de retorno: após obter a resposta da API, a Fonte de dados utiliza o caminho (JSON Path) informado (destaque 8 da figura 3.1) para acessar a lista de objetos.
Durante a configuração da Fonte de dados web services, o caminho é informado no passo 2, a partir do campo Para Obter.
Para Obter (Get)
Essa ação é responsável por obter os dados do recurso e, dependendo da chamada, pode retornar um único elemento ou uma lista de elementos.
Se o serviço REST utilizado suporta paginação e ordenação e possui parâmetros para esses recursos, esses campos devem ser configurados aqui. A Fonte de dados possui uma série de constantes que facilitam essa conversão, acesse o tópico "Parâmetros e Constantes" da Fonte de dados para mais detalhes. É muito comum o serviço REST ter no mínimo os parâmetros de paginação como top, skip, page, per_page, limit e offset.
Exemplo 1 (Get)
Acesse a descrição dos campos abaixo para mais detalhes.
Endereço Principal: https://meusistema.com.br/api/users
Campo URL: <vazio>
Caminho: $.data
Método: GET
Requisição final: https://meusistema.com.br/api/users
Corpo da requisição enviado para a API: <vazio>
Corpo da requisição retornada pela API:
{ "page": 1, "per_page": 6, "total": 12, "total_pages": 2, "data": [ { "id": 1, "email": "js@cronapp.io", "nome": "João Souza" }, { "id": 2, "email": "ma@cronapp.io", "nome": "Maria Andrade" }, ... ], "support": { "url": "https://www.cronapp.io", "text": "this is an example" } }Conteúdo do caminho na requisição de retorno:
[ { "id": 1, "email": "js@cronapp.io", "nome": "João Souza" }, { "id": 2, "email": "ma@cronapp.io", "nome": "Maria Andrade" }, ... ]
Exemplo 2 (Get)
Acesse a descrição dos campos abaixo para mais detalhes.
Endereço Principal: https://meusistema.com.br/api/user
Campo URL: expression: ${primaryKey}
Caminho: <vazio>
Método: GET
Requisição final: https://meusistema.com.br/api/user/2
Corpo da requisição enviado para a API: <vazio>
Corpo da requisição retornada pela API:
{ "id": 2, "email": "ma@cronapp.io", "nome": "Maria Andrade" }Conteúdo do caminho na requisição de retorno:
{ "id": 2, "email": "ma@cronapp.io", "nome": "Maria Andrade" }
Exemplo 3 (Get)
Acesse a descrição dos campos abaixo para mais detalhes.
Endereço principal: https://meusistema.com.br/v2/api/list
Campo URL: /api/users
Caminho: $.data
Método: GET
Requisição: https://meusistema.com.br/api/users?page=1&per_page=6
page: top
per_page: per_page
Corpo da requisição enviado para a API: <vazio>
Corpo da requisição retornada pela API:
{ "page": 1, "per_page": 6, "total": 12, "total_pages": 2, "data": [ { "id": 1, "email": "js@cronapp.io", "nome": "João Souza" }, { "id": 2, "email": "ma@cronapp.io", "nome": "Maria Andrade" }, ... ], "support": { "url": "https://www.cronapp.io", "text": "this is an example" } }Conteúdo do caminho na requisição de retorno:
[ { "id": 1, "email": "js@cronapp.io", "nome": "João Souza" }, { "id": 2, "email": "ma@cronapp.io", "nome": "Maria Andrade" }, ... ]
Para Inserir (Post)
Ação utilizada para incluir novos elementos ao serviço. O conteúdo a ser adicionado é enviado no corpo da requisição e alguns serviços retornam o próprio elemento, sinalizando sucesso na operação.
Exemplo 1 (Post)
Acesse a descrição dos campos abaixo para mais detalhes.
Endereço principal: https://meusistema.com.br/api/user
Campo URL: <vazio>
Caminho: <vazio>
Método: POST
Requisição final: https://meusistema.com.br/api/user
Corpo da requisição enviada para a Fonte de dados:
{ "id": 3, "email": "pp@cronapp.io", "nome": "Pedro Porto" }Corpo da requisição retornada pela API:
{ "id": 3, "email": "pp@cronapp.io", "nome": "Pedro Porto" }Conteúdo do caminho na requisição de retorno:
{ "id": 3, "email": "pp@cronapp.io", "nome": "Pedro Porto" }
Exemplo 2 (Post)
Acesse a descrição dos campos abaixo para mais detalhes.
Endereço principal: https://meusistema.com.br/api/user