Eine Ressource ist das, mit dem Sie arbeiten. Wenn Sie beispielsweise eine API zum Schalten einer bestimmten Lampe haben, ist die Ressource die Lampe selbst. Eine Ressource kann physisch (z. B. Lampe, Person) oder nicht physisch (z. B. Artikel, Rolle, Zeile in der Datenbank) sein. Eine Ressource kann primär (z. B. Kontostand) oder abgeleitet (z. B. Transaktion) sein. Eine Ressource kann sich auf eine bestimmte Entität beziehen (z. B. die fünfte in dieser Lampenfassung installierte Lampe) oder auf eine Rolle, die zu unterschiedlichen Zeiten einer anderen Entität zugeordnet ist (z. B. die aktuell installierte Lampe, die am 5. August 2008 installierte Lampe). oder es kann mehreren Entitäten zugeordnet werden (z. B. allen Lampen im Haus).
Die Darstellung einer Ressource ist die Art und Weise, wie Ihr Dienst den Status der Ressource kommuniziert, z. B. XML, JSON, das den Status der Lampe darstellt.
In der REST-API wird eine Ressource durch eine einheitliche Kennung (z. B. URI) identifiziert. Eine einzelne Ressource kann mehrere Darstellungen haben. In der HTTP-REST-API geben Sie normalerweise die Darstellung an, die Sie in den Headern HTTP Content-Type und Accept verwenden möchten.
Eine wichtige Erkenntnis in der Client-Server-Architektur ist, dass Sie die Ressource nicht zum Client bringen können und nicht versuchen sollten, sie so zu gestalten, wie Sie es tun. Stattdessen können Sie in der REST-API eine Ressource remote bearbeiten, indem Sie Darstellungen der Ressource übertragen. Stellen Sie sich das so vor, Sie führen die Lampe nicht mit FedEx aus, damit der Client die Lampe direkt manipulieren kann, sondern der Dienst erstellt eine XML / JSON / protobuf / CSV-Darstellung der Lampe und der Client sendet eine Darstellung der beabsichtigten Manipulationen. Der Dienst manipuliert dann den tatsächlichen Status der Lampe im Namen des Clients oder lehnt die Anforderung ab, beispielsweise wenn der Client nicht berechtigt ist, die Vorgänge an der Lampe auszuführen. Dies mag offensichtlich erscheinen / Haare spalten, aber das Wichtigste ist, dass, da die Darstellung nicht die Ressource selbst ist,