OneSpan Sign Como: Criar e Enviar um Pacote com REST no Go

Go (ou golang) é uma linguagem de programação de uso geral de código aberto criada pelo Google. Os recursos de simultaneidade nativos da Go são adequados para aplicativos da Web (por exemplo, APIs, servidores da Web etc.). O Go oferece muitas vantagens sobre outras linguagens de programação de uso geral. Por um lado, os arquivos executáveis criados pelo Go são executáveis independentes, sem dependências externas. Outra vantagem que o Go tem é a velocidade. Os executáveis resultantes são executados mais rapidamente do que a maioria das linguagens executadas dinamicamente. Por fim, os programas Go também podem conversar com bibliotecas externas C, o que oferece mais flexibilidade no que você pode alcançar. Neste blog, mostrarei como criar e enviar um pacote com a API REST no Go.
O código
Se você ainda não possui o Go instalado, faça o download no site oficial, aqui . O código de exemplo completo está disponível em nossa Comunidade de desenvolvedores Partilha de código . Vamos começar. No seu editor de texto favorito, crie um novo arquivo chamado "CreateAndSendPackage.go" e salve-o em um local de sua escolha. Você pode copiar o código abaixo. Examinarei isso com mais detalhes mais adiante.
pacote principal importação ( "bytes" "fmt" "io" "registro" "mime / multipart" "net / http" "os" "caminho / caminho do arquivo" ) func main () { json: = `{" documents ": [{" approvals ": [{" id ":" ExampleSignatureId "," role ":" Signer1 "," fields ": [{" page ": 0," top ": 200 , "subtipo": "LABEL", "height": 50, "left": 100, "width": 200, "id": "myLabelField", "type": "INPUT", "value": "Label de exemplo valor do campo "}, {" page ": 0," top ": 100," subtipo ":" FULLNAME "," height ": 50," left ": 100," width ": 200," type ":" SIGNATURE "," name ":" ExampleSignatureId "}]," name ":" "}]," id ":" sample-contract "," name ":" Test Document "}]," status ":" DRAFT ", "type": "PACKAGE", "functions": [{"id": "Signer1", "type": "SIGNER", "signatários": [{"email": "signatário @example .com "," firstName ":" John "," lastName ":" Smith "," id ":" Signer1 "}]," name ":" Signer1 "}]," name ":" Exemplo de pacote no GO " } ` extraParam: = map [string] string { "carga": json, } doc_path, _: = os.Getwd () doc_path + = "/sample_contract2.pdf" arquivo, err: = os.Open (caminho_do_doc) se errar! = nulo { log.Fatal (err) } adiar file.Close () body: = & bytes.Buffer {} writer: = multipart.NewWriter (body) parte, err: = writer.CreateFormFile ("file", filepath.Base (doc_path)) se errar! = nulo { log.Fatal (err) } _, err = io.Copiar (parte, arquivo) para chave, val: = range extraParam { _ = writer.WriteField (chave, val) } err = writer.Close () se errar! = nulo { log.Fatal (err) } req, err: = http.NewRequest ("POST", "https://sandbox.esignlive.com/api/packages", corpo) req.Header.Set ("Authorization", "Basic_api_key") req.Header.Set ("Accept", "application / json") req.Header.Set ("Tipo de conteúdo", writer.FormDataContentType ()) se errar! = nulo { log.Fatal (err) } cliente: = & http.Client {} resp, err: = client.Do (req) se errar! = nulo { log.Fatal (err) } outro { body: = & bytes.Buffer {} _, err: = body.ReadFrom (resp.Body) se errar! = nulo { log.Fatal (err) } resp.Body.Close () fmt.Println (resp.StatusCode) fmt.Println (resp.Header) fmt.Println (body) } }
Agora, vamos revisar o código em mais detalhes. As duas primeiras linhas importam os módulos necessários para fazer solicitações HTTP para a API do OneSpan Sign.
importação ( "bytes" "fmt" "io" "registro" "mime / multipart" "net / http" "os" "caminho / caminho do arquivo" )
Em seguida, definimos a carga útil do json que será incluída na solicitação POST para o OneSpan Sign. Normalmente, você constrói sua string json dinamicamente versus uma string grande, como neste exemplo. Eu escolhi fazê-lo por simplicidade.
json: = `{" documents ": [{" approvals ": [{" id ":" ExampleSignatureId "," role ":" Signer1 "," fields ": [{" page ": 0," top ": 200 , "subtipo": "LABEL", "height": 50, "left": 100, "width": 200, "id": "myLabelField", "type": "INPUT", "value": "Label de exemplo valor do campo "}, {" page ": 0," top ": 100," subtipo ":" FULLNAME "," height ": 50," left ": 100," width ": 200," type ":" SIGNATURE "," name ":" ExampleSignatureId "}]," name ":" "}]," id ":" sample-contract "," name ":" Test Document "}]," status ":" DRAFT ", "type": "PACKAGE", "functions": [{"id": "Signer1", "type": "SIGNER", "signatários": [{"email": "signatário @example .com "," firstName ":" John "," lastName ":" Smith "," id ":" Signer1 "}]," name ":" Signer1 "}]," name ":" Exemplo de pacote no GO " } ` extraParam: = map [string] string { "carga": json, }
O próximo par de linhas é onde o documento pdf é aberto e lido. Certifique-se de usar a chamada "adiar" para garantir que o documento pdf seja fechado no final do programa. Caso contrário, um erro será gerado.
doc_path, _: = os.Getwd () doc_path + = "/sample_contract2.pdf" arquivo, err: = os.Open (caminho_do_doc) se errar! = nulo { log.Fatal (err) } adiar file.Close ()
Depois de definir a carga útil do json e o documento, a próxima etapa é criar a solicitação multipart / form-data usando o módulo multipart, como mostrado abaixo.
body: = & bytes.Buffer {} writer: = multipart.NewWriter (body) parte, err: = writer.CreateFormFile ("file", filepath.Base (doc_path)) se errar! = nulo { log.Fatal (err) } _, err = io.Copiar (parte, arquivo) para chave, val: = range extraParam { _ = writer.WriteField (chave, val) } err = writer.Close () se errar! = nulo { log.Fatal (err) }
Em seguida, adicione os cabeçalhos apropriados necessários para fazer solicitações HTTP à API do OneSpan Sign.
req, err: = http.NewRequest ("POST", "https://sandbox.esignlive.com/api/packages", corpo) req.Header.Set ("Authorization", "Basic_api_key") req.Header.Set ("Accept", "application / json") req.Header.Set ("Tipo de conteúdo", writer.FormDataContentType ()) se errar! = nulo { log.Fatal (err) }
Por fim, você constrói seu cliente HTTP e faz sua solicitação POST. Opcionalmente, você também pode imprimir a resposta enviada pelo OneSpan Sign.
cliente: = & http.Client {} resp, err: = client.Do (req) se errar! = nulo { log.Fatal (err) } outro { body: = & bytes.Buffer {} _, err: = body.ReadFrom (resp.Body) se errar! = nulo { log.Fatal (err) } resp.Body.Close () fmt.Println (resp.StatusCode) fmt.Println (resp.Header) fmt.Println (body) }
Executando seu código
Abra o prompt de comando e altere o diretório atual para o local em que você salvou o arquivo "CreateAndSendPackage.go". Em seguida, insira as seguintes linhas:
vá criar CreateAndSendPackage.go CreateAndSendPackage.exe
O OneSpan Sign retornará um ID do pacote como resposta, que será impresso na janela do prompt de comando.
Se você tiver dúvidas sobre este blog ou qualquer outra coisa relacionada à integração do OneSpan Sign ao seu aplicativo, visite os fóruns da comunidade de desenvolvedores: https://developer.OneSpan.com . É isso de mim. Obrigado pela leitura! Se você achou esta publicação útil, compartilhe-a no Facebook, Twitter ou LinkedIn.