Il Cloud Connector per condividere web api interne

Se state sviluppando delle web api con Foundation e non le avete ancora pubblicate su di un server pubblico per utilizzarle da Instant Developer Cloud, perché non avete ancora implementato un sistema di autenticazione, oppure non avete ancora il server, le potete raggiungere con il Cloud Connector.
Oppure sono semplicemente web api della rete interna non pubblicate.

Naturalmente se le vado ad interrogare mediante il Cloud Connector da codice non le postro importare con la funzione apposita dell’ide di Cloud.

Vediamo lo scenario.
Abbiamo un progetto di Instant Developer Foundation che espone le web api sul di un portatile nella mia rete locale.
Abbiamo un progetto di Instant Developer Cloud dal quale vogliamo utilizzare le web api Foundation.

Installiamo il Cloud Connector sul portatile (GitHub - progamma/cloud-connector) e lo configuriamo.
Questo il config.json di configurazione per la parte file system:

  "fileSystems": [
    {
      "name": "pabloFileSystemTemp",
      "path": "C:\\users\\pablo\\temp",
      "permissions": "rw",
      "APIKey": "367714c0-e044-4477-a4c3-03ca340daadb"
    }
  ]

Il codice da utilizzare su Cloud per accedere sarà:

App.BE.WebApiLocal.getInfoSupplier = function(app, id)
{
  // Imposto il remote file Systema a cui accedere mediante il Cloud Connector
  let rfs = new App.RemoteFS(app, "pablo-pc-nwind-db://pabloFileSystemTemp", "367714c0-e044-4477-a4c3-03ca340daadb");
  let url = "http://192.168.0.32:1308/NuovaApplicazioneWeb/NuovoComponente/Suppliers/" + String(id);
  let u = rfs.url(url);
  let retInfo = {};
  //
  try {
    // Eseguo una get per leggere le informazioni
    let res = yield u.get();
    console.log("PG - WebApiLocal.getInfoSupplier - res", res);
    //
    // Tutto ok - nel body ho il documento Supplier
    if (res.status === 200) {
      let sup = JSON.parse(res.body);
      console.log("PG - getInfoSupplier - sup", sup);
      retInfo = {supplier : sup, error : ""};
    }
    //
    // Richiesta errata - nel body ho una stringa di errore
    if (res.status === 400) {
      retInfo = {supplier : null, error : res.body};
    }
    //
    // Documento non trovato - nel body ho una stringa di errore
    if (res.status === 404) {
      retInfo = {supplier : null, error : res.body};
    }
    //
    if (res.error) {
      console.log("PG - res.error", res.error);
      retInfo = {supplier : null, error : res.error};
    }
  }
  catch (err) {
    // Il Cloud Connector non è stato trovato
    console.log("PG - err.stack", err.stack);
    retInfo = {supplier : null, error : err.stack};
  }
  console.log("PG - WebApiLocal.getInfoSupplier  - retInfo", retInfo);
  //  
  return retInfo;
};
3 Mi Piace

Questo è interessantissimo, in pratica si usa il Cloud Connector come un proxy.
È necessario aggiornare il cloud connector installato oppure ha sempre avuto questa funzionalità?

Secondo me ha sempre funzionato in quanto è un’opzione del file system.

Mi fa piacere che ti interessi @d.termini, io l’ho trovata utile per fare dei test con dati che ho sul mio portatile.

Mi interessa perché il 90% delle volte abbiamo necessità di debuggare le chiamate web api prima di metterlo in produzione, e gira sul nostro pc personale di sviluppo.

In alcuni casi abbiamo ovviato installando l’applicazione nel server di test, raggiungibile dall’esterno, quindi su Cloud impostavamo il nostro IP aziendale invece che l’url di produzione.

Ma così diventa tutto più trasparente e veloce, attivo il cloud connector nella mia macchina di sviluppo e lato Cloud gli dico “connettiti a quel cloud connector” e tutto lì!

1 Mi Piace

@d.termini direi che condividere da soddisfazione e fa risparmiare tempo a tutti!

2 Mi Piace

Ma per debuggare le chiamate web api non si può usare Postman?
Almeno così mi sembrava di capire facendo un corso su InDe Cloud…

Eh dipende, se devi debuggare la gestione della risposta devi creartela in Postman esattamente come la farebbe l’applicazione Foundation, e comunque dovresti fare sempre la chiamata verso Postman

2 Mi Piace