"Service" vs "API" ist eine ziemlich vage Frage. Oft werden die beiden Begriffe synonym verwendet. "REST" vs "RPC" ist ein wenig einfacher zu erklären.
In der Regel stellt eine URL bei REST eine bestimmte Ressource dar, z. B. "Benutzer", "Konto" usw. Normalerweise können Sie diese Ressourcen mithilfe der HTTP-Methoden POST/GET erstellen/abrufen/aktualisieren/löschen/PUT/LÖSCHEN. Um das Profil zu aktualisieren für Benutzer 1125 möglicherweise die folgende an:
POST /user/1125 HTTP/1.1
Host: wherever.com
Content-type: application/x-www-form-urlencoded
firstName=Davey&lastName=Jones&email=dj%40thebrineydeep.com
Alles, was Sie mit Benutzer 1125 tun wollten, würden Sie eine Anfrage an die gleichen URL senden. Es gibt Ausnahmen und Varianten dieser Idee, aber das ist der Kern davon.
RPC-Dienste ist mehr wie nur mit einer Funktionsbibliothek, die an eine bestimmte URL gebunden ist. Sie könnten eine ganze Reihe verwandter Funktionen haben, die alle an die URL /services/json
gebunden sind. Dann, wenn Sie das Profil für alte Davey Jones ändern wollten, würden Sie:
POST /services/json HTTP/1.1
Host: wherever.com
Content-type: application/json
{ "jsonrpc": "2.0",
"id": 1,
"method": "setProfile",
"params": [ 1125,
{ "firstName": "Davey",
"lastName": "Jones",
"email": "[email protected]"
}
]
}
ich persönlich wie JSON-RPC besser, weil:
- Ich muss nicht versuchen, und passen alle meine Funktion ruft in eine Art von Ressource-zu-URL-Zuordnung auf, die keinen Sinn ergibt
- Wir versuchen nicht, die HTTP-Antwortcodes zu überladen, um API-Fehler anzuzeigen. Jede Anfrage gibt eine Antwort von 200 zurück (es sei denn, es liegt ein Serverfehler vor) und Sie wissen vom Antworttext, ob Sie einen Fehler erhalten haben oder nicht. JSON-RPC ist besonders gut darin, Fehlerbedingungen explizit anzugeben.
Manchmal ist REST besser, weil:
- Manchmal ist die Ressource-to-URL-Mapping wirklich gut passt
- Es ist intuitiver für Dritte
- Es bietet ein einfacheres Modell zu verstehen, für nur leicht identifizierbare Informationen
Ich glaube nicht, dass es einfacher ist, einen zu codieren.
Bearbeiten Ich änderte das REST-Beispiel, um die üblicheren formcodierten Daten anstelle von JSON zu verwenden. Natürlich können Sie mit REST jedes beliebige Datenformat angeben. Es ist nicht in Stein gemeißelt.
Hier haben Sie einen Vergleich http://stackoverflow.com/questions/1098473/rest-vs-rpc – Chuidiang
Wenn Sie möchten, dass RPC SOAP verwenden. Sonst REST. –