Unterschiede zwischen XML und json in Coupa
Datentypen in json
Für json unterstützt Coupa Folgendes: Null, boolesch, Zahl und Zeichenfolgen. Präzision, Version und ähnliche Werte verwenden den Datentyp Zahl, wobei die Dezimalpräzision beispielsweise eine Zeichenfolge ist. Alle nicht explizit aufgerufenen Werte verwenden den String datatype.
Es gibt vier Unterschiede zwischen der Funktionsweise der REST-APIs von Coupa bei der Verwendung von json und der Verwendung von XML.
1. Json verwendet keinen übergeordneten Knoten
In XML erhalten wir den übergeordneten Knoten am Anfang und am Ende der Antwort. In json ist kein übergeordneter Knoten als Antwort verfügbar.
XML-Antwort
<?xml version="1.0" encoding="UTF-8"?>
<account>
<id type="integer">41</id>
<created-at type="dateTime">2016-10-07T06:56:43-07:00</created-at>
<updated-at type="dateTime">2016-10-07T06:56:43-07:00</updated-at>
<name>account_1475848602.731066227</name>
<code>segment11475848602928</code>
<active type="boolean">wahr</active>
<segment-1>segment11475848602928</segment-1>
<segment-2 nil="true" />
---------------------------------------------
</account>
JSON-Antwort
{
"id": 43,
"created-at": "2016-10-07T06:59:46-07:00",
"updated-at": "2016-10-07T06:59:46-07:00",
"name": "Konto_1475848721.456090234",
"code": "segment11475848721222",
"active": wahr,
"segment-1": "segment11475848721222"
}
2. Unterschiedliche Antwort für keine Ergebnisse
Wenn es keine Ergebnisse gibt, die mit der GET-Abfrage übereinstimmen, wirft unsere XML-Antwort einen 404-Fehler aus, wobei die JSON-Antwort ein leeres Array bereitstellt.
ABRUF: https://dashmaster17-0.coupadev.com/api/accounts?id=NON_EXISTING
XML-Antwort
<?xml version="1.0" encoding="UTF-8"?>
<errors>
<error>Es gibt keine Ergebnisse, die Ihren Suchkriterien entsprechen.</error>
</errors>
JSON GET-API
[ ]
3. Verschiedene Knoten für Fehlermeldung
XML-Antwort
<?xml version="1.0" encoding="UTF-8"?>
<errors>
<error>Segment 1 - Kostenstelle kann nicht leer sein.</error>
</errors>
JSON-Antwort
{
"errors": {
"account": [
"Segment 1 - Kostenstelle kann nicht leer sein"
]
}
}
4. Abweichende Antwort für API-Aufruf "Land in Adresse"
Nachfolgend sind die beiden Sätze von Antworten für einen POST-API-AUFRUF aufgeführt: http://localhost:3000/api/addresses
XML-Antwort
<?xml version="1.0" encoding="UTF-8"?>
<address>
<id type="integer">97</id>
<created-at type="dateTime">2016-10-07T07:19:07-07:00</created-at>
<updated-at type="dateTime">2016-10-07T07:19:07-07:00</updated-at>
<name>address_1475849947.739228964</name>
<location-code nil="true" />
<street1>2 W 5th Ave</street1>
--------------------------------
<country>
<id type="integer">223</id>
<code>US</code>
<name>Vereinigte Staaten</name>
</country>
--------------------------------
</address>
JSON-Antwort
{
"id": 99,
"name": "Adresse_1475850128.91",
"street1": "2 W 5th Ave",
"street2": "Suite 300",
"city": "San Mateo",
"state": "CA",
"postal_code": "94404",
"country_id": 223,
"address_owner_type": "BusinessGroup",
"parent_address_id": Null,
"Land": "Vereinigte Staaten"
}