Wir entwickeln eine RESTful-API, um die Kontoinformationen unserer Kunden zu öffnen. Wir haben Darstellungen, die Verweise auf andere Ressourcen enthalten, die sich auf die aktuelle Ressource beziehen. Dies geht auf eine Reihe von Best Practices zurück, die wir in öffentlichen APIs sowie in veröffentlichten Materialien finden konnten. Die Darstellungen können entweder XML oder JSON sein.
Beispielsweise hätten wir für eine Kontoressource Verweise auf die Adressen des Kontos und für eine paginierte Listenressource Verweise auf die erste, nächste und vorherige Seite.
Die API wurde zuerst unter Verwendung semantischer Links entwickelt, <link title="" rel="" href="" />
wie in einem O'Reilly-Buch beschrieben, und in APIs von Netflix und Google verwendet. Als unsere QS-Ingenieure die Automatisierungssuite schreiben mussten, hatten sie Probleme, die Links zu deserialisieren. Wir haben jetzt einfachere Uri-String-Elemente vorgeschlagen, die in APIs von Facebook und Twitter verwendet wurden.
Unsere QS-Entwickler haben inzwischen ihre Deserialisierungsprobleme gelöst, aber ich habe immer noch Bedenken hinsichtlich der Benutzerfreundlichkeit der aktuellen API-Spezifikation mit semantischen Links. Unsere API wird hauptsächlich von unseren Kunden und einigen Partnerschaften mit Drittanbietern verwendet. Wir haben uns für REST entschieden, da die vorherige XML-RPC-API für unsere Kunden zu schwierig war.
tl; dr;
Frage:
Hat jemand, der eine semantische Linkdarstellung implementiert hat, Verbraucherprobleme mit dieser Schwierigkeit erlebt?
Update (21.06.): Ich habe mich entschlossen, bei semantischen Links zu bleiben und hoffe, dass die Verwirrung ein Randfall war. Ich werde versuchen, mich daran zu erinnern, die Frage mit unseren Erfahrungen zu beantworten, sobald die API bei einigen Verbrauchern verfügbar ist.
Bearbeiten: Beispiele hinzufügen
Semantisches Konto JSON:
{
"username": "paul",
"links": [
{
"title": "addresses",
"rel": "related",
"href": "http://example.com/account/paul/addresses"
},
{
"title": "history",
"rel": "related",
"href": "http://example.com/account/paul/history"
}
]
}
Semantisches Konto XML:
<account>
<username>paul</username>
<link title="addresses" rel="related" href="http://example.com/account/paul/addresses" />
<link title="history" rel="related" href="http://example.com/account/paul/history" />
</account>
Einfaches Konto JSON:
{
"username": "paul",
"addresses": "http://example.com/account/paul/addresses"
"history": "http://example.com/account/paul/history"
}
Einfaches Konto XML:
<account>
<username>paul</username>
<addresses>http://example.com/account/paul/addresses</addresses>
<history>http://example.com/account/paul/history</history>
</account>