web-dev-qa-db-de.com

Tun REST API-URLs müssen so aussehen?

Stimmt es, dass zum Implementieren einer RESTful-API eine URL-Struktur implementiert werden muss, die so aussieht?

http://example.com/post/
http://example.com/post/123

wo der /123 zum bearbeiten verwendet wird, löschen

Eine andere Möglichkeit, die Frage zu stellen, ist: Kann eine URL, die so aussieht, RESTful genannt werden?

http://example.com/script.php?method=get_title&blogid=123
14
Gorge

Sie haben nicht , um Ihre URI-Struktur so zu gestalten. Es könnte auch /some_obscure_string/base64_encoded_title/unique_id sein. Dies kann auch REST-fähig sein, abhängig von mehreren anderen Faktoren.

Es gibt jedoch einige bewährte Vorgehensweisen, um URIs in einer RESTful-Webanwendung zu entwerfen und so einfach und so lesbar wie möglich zu sein, ist eine davon.

Ihr Beispiel http://example.com/script.php?method=get_title&blogid=123 könnte auch RESTful sein, aber die Abfrageparameter zeigen an, dass stattdessen eine Art RPC- oder RMI-over-HTTP verwendet wird.

Um es zusammenzufassen: Denken Sie nicht zu viel über Ihr URI-Design nach. Dies wird automatisch mit einem guten und ordnungsgemäßen RESTful-Design Ihrer Anwendung einhergehen.

14
joschi

Die Idee hinter REST ist, dass jede Ressource ihre eigene URL hat und Sie die verschiedenen HTTP-Methoden verwenden, um mit diesen Ressourcen zu interagieren. Es ist sinnvoll, die URL-Struktur so zu definieren, dass die Hierarchie zwischen verschiedenen Ressourcen in der URL wiedergegeben wird. Dies muss jedoch nicht der Fall sein.

Wenn Sie solche URLs haben

 /all-posts/
 /first-post
 /some-stuff/second-post
 /third-post

sie könnten immer noch eine RESTful-API zur Verfügung stellen. Die Idee ist, dass eine GET bis /all-posts/ eine Liste der URLs aller Post-Objekte zurückgibt und der Client diese URLs verwendet, um mit den Ressourcen zu interagieren. Grundsätzlich sollten die URLs vom Client als undurchsichtige Daten behandelt werden.

Solange sich die im Client eingebettete URL nicht ändert, können Sie auch die Struktur ändern, ohne den Client ändern zu müssen.

Ihre Beispiel-URL gehört wahrscheinlich nicht zu einer RESTful-API, da sie eine Methode get_title enthält. In REST steht eine URL für ein thing . Was mit dem Ding zu tun ist (sollte es geändert werden, sollte es abgerufen werden, ...), ist nicht Teil der URL, da REST die verschiedenen HTTP-Methoden verwendet.

7
Sven

Ein Schlüsselaspekt von REST ist, dass die URL die Ressource ist. ein uri mag

http://example.com/script.php?etc-etc-etc

die Ressourcenkennung wird nicht in den Ressourcenteil des URI eingefügt. Das heißt nicht, dass eine RESTful-API niemals get-Parameter verwenden sollte. In der Tat ist das gut so:

http://example.com/posts?sort=date_asc&offset=20&limit=10

vielleicht ist es eine gute Möglichkeit, die URIs der 3. Seite der ältesten Beiträge zu erhalten. Die Verwendung von get-Parametern auf diese Weise sollte jedoch nur in Anforderungen verwendet werden, bei denen die Methode ebenfalls GET ist. PUT- und insbesondere POST-Methoden sollten wirklich einfache URIs mit der Ressource verwenden, die nur im Pfadbereich betroffen ist.

Beim Entwurf von RESTful-URI dreht sich alles um den Zugriff auf Ressourcen, und diese sollten RESTful-strukturiert sein, sodass Sie keine Abfragezeichenfolgen haben sollten.

z.B. von GET

autoren /

autoren/1

autoren/1/Bücher

autoren/1/Bücher/10

autoren/1/Bücher/10/Zusammenfassung

usw.

Alles und alles wird in diesen Tagen RESTfull genannt. Schauen Sie sich nur einige der Antworten des Erfinders Dr. Roy Fielding an, und Sie erhalten einige Ideen. Es lohnt sich, etwas zu diesem Thema zu lesen.

P.S Sie brauchen kein Post, Get etc in Ihren URIs, das HTTP-Protokoll wird derzeit hauptsächlich für die Verwendung von REST APIs verwendet, und Sie können das Verb als Teil des Aufrufs übergeben. Es gibt auch ein Konzept der Inhaltsverhandlung. Sie können jedes verfügbare Format über REST API (json, xml atc) anfordern.

3
user1814491

Beispiel URLs:

GET http://del.icio.us/api/
GET http://del.icio.us/api/peej/tags/
GET http://del.icio.us/api/peej/tags/test
DELETE http://del.icio.us/api/peej/bookmarks/[hash]
1
Abdul Khaliq

Das REST-Konzept basiert wirklich auf der Tatsache, dass es URL-gesteuert ist und nicht von großen Datenblobs gesteuert wird. Mit REST müssen Sie keine riesige Seifenanforderung zum Aufrufen einer Methode übergeben. Ihr Methodenaufruf/Objekterstellung/was auch immer Sie möchten, wird einfach von der URL und dem von Ihnen verwendeten Verb gegen diese URL aufgerufen.

Die Struktur Ihrer URLs spielt keine Rolle. Es ist wichtig, dass jede URL genau 1 Ressource identifiziert. Jede Ressource kann mehrere URLs haben, die darauf verweisen, aber jede URL sollte nur auf eine Ressource zeigen.

0
rojoca