OneSpan Signe Comment: Créer et envoyer un paquet avec REST in Go

Haris Haidary, septembre 21, 2016

Go (ou golang) est un langage de programmation open-source à usage général créé par Google. Les fonctionnalités de concurrence natives de Go conviennent bien aux applications Web (p. ex. API, serveurs Web, etc.). Go offre de nombreux avantages par rapport à d'autres langages de programmation à usage général. D'une part, les fichiers exécutables créés par Go sont des exécutables autonomes sans dépendanceexterne. Un autre avantage Go a est la vitesse. Les exécutents qui en résultent s'exécutent plus rapidement que la plupart des langues exécutées de manière dynamique. Enfin, les programmes Go peuvent également parler aux bibliothèques C externes, ce qui vous donne plus de flexibilité dans ce que vous pouvez réaliser. Dans ce blog, je vais vous montrer comment créer et envoyer un paquet avec l'API REST en go.

Le code

Si vous n'avez pas déjà Go installé, vous pouvez le télécharger à partir du site officiel, ici. Le code d'exemple complet est disponible sur notre part de codecommunautaire des développeurs . Let's get started. Dans votre éditeur de texte préféré, créez un nouveau fichier nommé "CreateAndSendPackage.go" et enregistrez-le dans un endroit de votre choix. Vous pouvez aller de l'avant et copier le code ci-dessous. J'examinerai la façon de le faire plus en détail plus en détail.

forfait principal

import (
  "octets"
  "fmt"
  "io"
  "log"
  "mime/multipartie"
  "net/http"
  "os"
  "chemin/chemin de file"
)

func principal()

  
  json : ''''documents":["approbations":[id":"ExampleSignatureId","role":"Signer1",""fields":["page":0,"top":200,"subtype":"LABEL","height":50,"left":100,"width":200,"id":"myLabelField","type":"INPUT"," label field value" , "page":0,"top":100,"subtype":"FULLNAME","height":50,"left":100,"width":200,"type":"SIGNATURE","name":"ExampleSignatureId"],"name":""],id":"sample-contract","name":"Test" roles":[id":"Signer1","type":"SIGNER","signers":["email":"[email protected]","firstName":"John","lastName":"Smith","id":"Signer1"],"name":"Signer1"],name":"Signer1"],"name":"Exemple Package in GO"

  extraParam : carte[corde]string
      "charge utile": json,
  }
  
  doc_path, : : os. Getwd()
  doc_path "/sample_contract2.pdf"

  fichier, err : os. Ouvert (doc_path)
  si err !
      rapport. Fatal (err)
  }
  différer le fichier. Fermer ()

  corps : 'octets' . Tampon
  écrivain : multipartie. NewWriter (corps)
  partie, err : écrivain. CreateFormFile ("fichier", filepath. Base (doc_path))
  si err !
      rapport. Fatal (err)
  }
  Err et io. Copie (partie, fichier)

  pour la clé, val : gamme extraParam
      L'écrivain. WriteField (clé, val)
  }
  err et écrivain. Fermer ()
  si err !
      rapport. Fatal (err)
  }

  req, err : http. NewRequest (POST", "https://sandbox.esignlive.com/api/packages", corps)
  Req. Header.Set ("Autorisation", "your_api_key de base")
  Req. Header.Set("Accepter", "application/json")
  Req. Header.Set ("Content-Type", écrivain. FormDataContentType())

  si err !
      rapport. Fatal (err)
  }
  client : ' http. Client
  resp, err : Client. Do (req)
  si err !
      rapport. Fatal (err)
  } else {
      corps : 'octets' . Tampon
      Err : corps. LireDe (resp. Corps)
    si err !
          rapport. Fatal (err)
      }
    Reee. Body.Close()
      Fmt. Println (resp. StatusCode)
      Fmt. Println (resp. En-tête)
      Fmt. Println (corps)
  }
}

Maintenant, passons en revue le code plus en détail. Les deux premières lignes importent les modules nécessaires pour faire des demandes HTTP à l'API de OneSpan Sign.

import (
  "octets"
  "fmt"
  "io"
  "log"
  "mime/multipartie"
  "net/http"
  "os"
  "chemin/chemin de file"
)

Ensuite, nous définissons la charge utile json qui sera incluse dans la demande POST à OneSpan Sign. Vous pourriez généralement construire votre chaîne json dynamiquement par rapport à avoir une grande chaîne comme dans cet exemple. J'ai choisi de le faire pour la simplicité.

json : ''''documents":["approbations":[id":"ExampleSignatureId","role":"Signer1",""fields":["page":0,"top":200,"subtype":"LABEL","height":50,"left":100,"width":200,"id":"myLabelField","type":"INPUT"," label field value" , "page":0,"top":100,"subtype":"FULLNAME","height":50,"left":100,"width":200,"type":"SIGNATURE","name":"ExampleSignatureId"],"name":""],id":"sample-contract","name":"Test" roles":[id":"Signer1","type":"SIGNER","signers":["email":"[email protected]","firstName":"John","lastName":"Smith","id":"Signer1"],"name":"Signer1"],name":"Signer1"],"name":"Exemple Package in GO"

extraParam : carte[corde]string
      "charge utile": json,
}

Les deux prochaines lignes sont l'endroit où le document pdf est ouvert et lu. Assurez-vous d'utiliser l'appel de « report » pour vous assurer que le document pdf est fermé à la fin du programme. Dans le cas contraire, une erreur sera lancée.

doc_path, : : os. Getwd()
doc_path "/sample_contract2.pdf"

fichier, err : os. Ouvert (doc_path)
si err !
    rapport. Fatal (err)
}
différer le fichier. Fermer ()

Une fois que vous avez défini la charge utile json et le document, l'étape suivante consiste à construire la demande de données multiparties/formulaires à l'aide du module multipartite, comme indiqué ci-dessous.

corps : 'octets' . Tampon
écrivain : multipartie. NewWriter (corps)
partie, err : écrivain. CreateFormFile ("fichier", filepath. Base (doc_path))
si err !
    rapport. Fatal (err)
}
Err et io. Copie (partie, fichier)

pour la clé, val : gamme extraParam
    L'écrivain. WriteField (clé, val)
}
err et écrivain. Fermer ()
si err !
    rapport. Fatal (err)
}

Ensuite, vous ajoutez les en-têtes appropriés nécessaires pour faire des demandes HTTP à l'API de OneSpan Sign.

req, err : http. NewRequest (POST", "https://sandbox.esignlive.com/api/packages", corps)
Req. Header.Set ("Autorisation", "your_api_key de base")
Req. Header.Set("Accepter", "application/json")
Req. Header.Set ("Content-Type", écrivain. FormDataContentType())

si err !
    rapport. Fatal (err)
}

Enfin, vous construisez votre client HTTP et faites votre demande POST. En option, vous pouvez également imprimer la réponse envoyée par OneSpan Sign.

client : ' http. Client
resp, err : Client. Do (req)
si err !
    rapport. Fatal (err)
} else {
    corps : 'octets' . Tampon
    Err : corps. LireDe (resp. Corps)
    si err !
        rapport. Fatal (err)
    }
    Reee. Body.Close()
    Fmt. Println (resp. StatusCode)
    Fmt. Println (resp. En-tête)
    Fmt. Println (corps)
}

Exécution de votre code

Ouvrez votre invite de commande et modifiez l'annuaire actuel à l'endroit où vous avez enregistré votre fichier "CreateAndSendPackage.go". Ensuite, entrez les lignes suivantes:

aller construire CreateAndSendPackage.go
CreateAndSendPackage.exe (en)

OneSpan Sign retournera ensuite un id paquet en réponse, qui sera imprimé à la fenêtre de commande rapide. Capture

Si vous avez des questions concernant ce blog ou toute autre chose concernant l'intégration oneSpan Sign dans votre application, visitez les forums de la communauté des développeurs: https://developer.OneSpan.com. C'est moi qui l'ai fait. Merci de lire! Si vous avez trouvé ce message utile, s'il vous plaît le partager sur Facebook, Twitter, ou LinkedIn.

 Haris Haidary Junior Technical Evangelist LinkedIn (fr) Twitter (en)