Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

JavaScript-Bibliothek client/json

Diese JavaScript-Bibliothek bietet Funktionen zum Lesen von JSON-Daten von einem WebStream und Wandeln von JSON-Daten in JavaScript-Objekte.

Verwendung


Binden Sie die Bibliothek stets am Anfang eines Skripts ein:

let json = require('client/json');

Eine Verbindung zum REST-Service aufbauen


// Aufruf von http://url-to-service/path/to/service
let json = require('client/json');
let service = json('http://url-to-service', { 
  type: 'application/json', // Was liefern wir 
  accept: 'application/json' // Was wollen wir 
})('/path/to/service');

Funktionen


get

// Parameter hinzufügen (URL-Parameter)
service.query({ 
  param1: [ 'value1', 'value2' ], 
  sessionId: sessionId 
}); 

// Liefert JSON oder ein gewandeltes JavaScript-Objekt.
let getResponse = service.get();

post

// Parameter hinzufügen (URL-Parameter)
service.query({ 
  param1: [ 'value1', 'value2' ], 
  sessionId: sessionId 
}); 

// body definieren
let body = { 
  test: 'test123', 
  sessionId: sessionId, 
  testDate: new Date(), 
  testLong: 1234567890123456, 
  testDouble: 12345.9876, 
  testBoolean: true 
};

// Liefert JSON oder ein gewandeltes JavaScript-Objekt.
let postResponse = service.post(body);

put

// Parameter hinzufügen (URL-Parameter)
service.query({ 
  param1: [ 'value1', 'value2' ], 
  sessionId: sessionId 
}); 

// body definieren
let body = { 
  test: 'test123', 
  sessionId: sessionId, 
  testDate: new Date(), 
  testLong: 1234567890123456, 
  testDouble: 12345.9876, 
  testBoolean: true 
};

// Liefert JSON oder ein gewandeltes JavaScript-Objekt.
let postResponse = service.put(body);

Header

Sie können Header vor einer Verbindung (get, post) einsetzen, die das System bei jeder Verbindung mitgibt.

// Header hinzufügen.
service.header('X-Auth-Token', 123);

// Weitere Header mit gleichem key hinzufügen. -> Beide Header werden mitgeschickt.
service.header('X-Auth-Token', 'abc');

// Direkt ein Array mit mehreren Werten übergeben.
let tokens = ['123', 'abc'];
service.header('X-Auth-Token', tokens);

basicAuth

Dient als eine Art von Header zur Authentifizierung über Basic Auth.

// basicAuth hinzufügen.
service.basicAuth('username', 'password');

Timeout

Sie können bei der Initialisierung optional die Time-outs connectionTimeout und receiveTimeout setzen.

let json = require('client/json');
let service = json('http://url-to-service', {
  type: 'application/json',
  accept: 'application/json',
  connectionTimeout: 60000,
  receiveTimeout: 30000
})('/path/to/service');

Antwort-Header

Im Normalfall liefert das System den Antwort-Body als Ergebnis. Sind im Header der Antwort auch relevante Informationen, so könnewn Sie die Service-Referenz stattdessen im Raw-Modus erzeugen:

let json = require('client/json');

let getHeaderString = (result, name) => {
  let header = result.headers[name] || [];

  return header[0];
};

let service = json('http://url-to-service', {
  raw: true
});

let result = service('/path/to/call').get();

let myHeader = getHeaderString(result, 'my-header');
let body = result.body;

Folgende Felder stehen in dem zurückgegebenen Ergebnis-Objekt zur Verfügung:

Feld Beschreibung
headers Definiert ein Objekt, das alle Antwort-Header als Array enthält.
body Definiert den Antwort-Body als String oder JSON (wie im nicht-Raw-Modus).
stream Definiert den Antwort-Body als Stream bei Verwendung von getStream() statt get().

Beispiel anhand eines Logins an der agorum core JavaScript API


let json = require('client/json');

const SERVER = 'http://localhost';
const USERNAME = 'roi';
const PASSWORD = 'agorum';

let urlEncode = params =>
  Object.entries(params)
    .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))
    .join('&');

let service = json(SERVER, {
  accept: 'application/json',
  type: 'application/x-www-form-urlencoded',
});

let sessionId = service('/api/rest/session').post(urlEncode({ username: USERNAME, password: PASSWORD })).sessionId;

Sie erhalten die sessionId, die Sie bei jedem weiteren Aufruf der API mitgeben müssen.

Objekte in ein anderes System hochladen

let json = require('client/json');
let objects = require('common/objects');

const SERVER = 'http://localhost';
const USERNAME = 'roi';
const PASSWORD = 'agorum';

let urlEncode = params =>
  Object.entries(params)
    .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))
    .join('&');

let service = json(SERVER, {
  accept: 'application/json',
  type: 'application/x-www-form-urlencoded',
});

let sessionId = service('/api/rest/session').post(urlEncode({ username: USERNAME, password: PASSWORD })).sessionId;

let upload = (object, target) =>
  service('https://agorumdocproxy.agorum.com/api/rest/object/upload').query({ sessionId: sessionId, target: target }).postForm({
    file: object,
  });

upload(objects.find('...'), 'home:MyFiles');