2011-01-11 11 views
1

Ich habe viele über REST API in PHP-Artikeln gelesen. aber ich werde immer noch ziemlich verwirrend.wie PHP REST URL-Ressourcen zu verarbeiten

sie im Grunde die URL eines index.php umschreiben, die die URL und hängen von der Methode zu verarbeiten, dann sendet Antwort

aber die die richtig Weg ist, die URL zu verarbeiten? Das sieht doen't korrekt aussehen ...

  1. erhalten die uri und spaltete es
  2. ich wissen sollte, was mit jedem Teil zu tun, zum Beispiel. für GET/usr/1 sollte ich so etwas wie tun:
    if ($ myUri [0] == "usr")
    getUser ($ myUri [1]);

, wenn die Anfrage URL wie GET www.domain.com/user/1 ist es nennen würde getUser($id); aber was passiert, wenn man auch den Benutzer mit Namen abrufen kann, oder vielleicht E-Mail? so kann die URL auch www.domain.com/user/john oder www.domain.com/user/[email protected] sein und jede URL sollten verschiedene Methoden wie getUsrByName($name) oder getUsrByEmail($mail)

Antwort

3

Der richtige Weg, rufen der Umgang mit diesem wäre URLs wie diese haben:

domain.com/user/id/1    -> user::getById 
domain.com/user/email/[email protected] -> user::getByEmail 
domain.com/user/username/foo  -> user::getByUsername 

jedoch Angabe mehrerer "Parameter" ist mehr wie eine Suche, ich würde gegen die Verwendung von Ressourcen dafür gehen, weil ein Pfad absolut sein sollte. Das heißt:

domain.com/user/name/Kossel/likes/StackOverflow 

Und:

domain.com/user/likes/StackOverflow/name/Kossel 

Sind nicht die gleiche Ressource. Stattdessen würde ich tun:

domain.com/user/?name=Kossel&likes=StackOverflow 

Dies ist, was Stack-Überlauf verwendet:

stackoverflow.com/questions/tagged/php 
stackoverflow.com/tags/php/new 
stackoverflow.com/questions/tagged/mysql?sort=featured 
+0

und was ist mit der richtig Weg, um die uri zu verarbeiten? Wie stapeln Overflow tatsächlich die uri/questions/tagged/mysql? sort = featured? – Kossel

+0

Nun, ich kenne SO Quellcode nicht viel, aber ich würde es à-la-MVC tun: 'Fragen' ist der Controller,' tagged' ist eine Aktion, 'php' ist ein Anfrageparameter (sag ID) , und '? sort = featured' ist auch ein Anfrageparameter (ein Filter). Also, sagen Sie, Sie haben eine 'questions.php' Datei, das ist eine Datei mit einer Klasse oder' switch' Anweisung, die einen Fall für "tagged" enthält. Die letzte Ressource ('php') ist der 'id'-Parameter, während alles andere in' $ _GET' ihre jeweiligen Parameter sind. – netcoder

0

lange zu vermeiden, wenn/else-Anweisung, variable Funktionsnamen verwenden. Dadurch können Sie die URL-Zeichenfolge verwenden, um die richtige Funktion aufzurufen.

http://php.net/manual/en/functions.variable-functions.php

Auch Sie können Klassen/Klassenmethoden anstelle von Funktionen verwenden möchten. Auf diese Weise können Sie eine __autoload-Funktion einrichten, mit der Sie nur den Code laden können, den Sie bei jedem Aufruf der index.php verwenden möchten.

MVC-Architektur bricht in der Regel ihre URLs in/class_name/class_method_name/Argumente ...

Verwandte Themen