O Mingle tem o serviço API Gateway para produtos que precisam de exposição de API para internet, garantindo canal único de liberação da rede do cliente para a nuvem e a segurança de não precisar expor o endereço completo do servidor do cliente. 

Nesta etapa você será capaz de realizar requisições ao servidor usando a segurança e simplicidade do mingleService.


Vamos imaginar que você desenvolvedor precisa criar uma funcionalidade que busque uma lista de produtos do seu backend através do endereço  

http://servidor-exemplo.com.br/listaProdutos


Com o Mingle Gateway, você não precisa comprometer a segurança do seu host ao informar o endereço rest completo, basta informar o endpoint desejado.

Veja o bloco de código abaixo: 

getProducts() {
   return this.mingleService.gateway.get('listaProdutos').subscribe(response => {
     return JSON.stringify(response);
   }, error => {
	console.error("Error in gateway endpoint 'listaProdutos'");
     return error ;
   }
   );
}

Dessa forma o resultado do endereço para o request é "https://dev-mingle.totvs.com.br/listaProdutos" e através do seu ALIAS o Mingle identifica qual é o endereço final do servidor para realizar a chamada GET no endpoiont listaProdutos. 

Ao utilizar a classe mingleService.gateway você substitui o request http padrão do typescript e garante a segurança da informação.

Headers customizados

É possível enviar headers customizados de acordo com a sua implementação para o seu host.

Neste exemplo, vamos adicionar o header "x-totvs-header-customizado" ao request:

getProducts() {
   const options = {headers: {"x-totvs-header-customizado": "123456"}};
 
return this.mingleService.gateway.get('listaProdutos', options).subscribe(response=>{
     return JSON.stringify(response);
   }, error => {
     console.error("Error in gateway endpoint 'listaProdutos'");
     return error ;
   })
}

Classe mingleService.Gateway

A classe mingleService.gateway está pronta para realizar as seguintes ações:

Os métodos get, post,put, delete e patch são responsáveis pela comunicação http entre o aplicativo e o servidor do Mingle conforme apresentado nos tópicos anteriores desse documento. 

O método getHeaders retorna os headers padrões do MingleService.

O método getUrl retorna a URL padrão do MingleService. 

Envio de arquivos (FormData)

Se o seu aplicativo permite upload de arquivos para o usuário, você pode enviá-los para o seu host através do Mingle usando a interface FormData.

Essa interface utiliza o mesmo formato que um form html utilizaria se o tipo de codificação estivesse configurado como "multipart/form-data".


Neste exemplo, recebemos arquivos com qualquer tipo de extensões através do upload no html

<po-upload name="upload" [(ngModel)]="fileUpload"> </po-upload>

<ion-button (click)="sendFilesByMingle(fileUpload)">Direto</ion-button>

E enviamos com o MingleService no método sendFilesByMingle(fileUpload):

public sendFilesByMingle (file: any) {
    const formData: FormData = new FormData();

    formData.append('file', file[0].rawFile);

    const options = { body: formData };

    this.mingleService.gateway.post("api/upload", options).subscribe(res => {
      console.log("HTTP RESPONSE OK: ", res)
    }), error => {
      console.log("HTTP RESPONSE ERROR:", error);
    }

  }

Envie o formData através do body usando a classe mingleService.gateway.

Dessa forma os seus arquivos serão enviados para o seu host.