2012-12-17 13 views
5

Czytałem artykuł:routing żądań REST bez ram?

http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

aby dowiedzieć się, jak zbudować API odpoczynek. W pewnym momencie jest napisane "Zakładając, że przekierowałeś swoje żądanie do właściwego kontrolera dla użytkowników"

Próbowałem znaleźć samouczek lub coś, co pokazuje, jak to zrobić, ale wszystko, co przeczytałem, sugeruje ramy. Jak mogę to zrobić bez frameworka?

EDIT:

Piszę API REST, że mogę oddziaływać z innej aplikacji. Przygotowałem powyższy tutorial i ma to sens głównie, ale nie rozumiem dokładnie, co to znaczy przekierowywać moją prośbę do właściwego kontrolera dla użytkowników.

+0

Jeśli chcesz wykonać PHP MVC, nie korzystanie z już istniejącej struktury prawdopodobnie nie jest zalecane. Jeśli nalegasz na zrobienie tego samemu, musisz dokładniej zdefiniować, co dokładnie chcesz zrobić, ponieważ teraz nie odpowiada to w obecnej formie. Czy pytasz, jak napisać coś, co akceptuje żądanie HTTP ... faktyczną nową strukturę MVC ..? – thatidiotguy

Odpowiedz

3

Zakładając, że używasz Apache, możesz to łatwo osiągnąć, używając kombinacji mod_rewrite i pewnej logiki opartej na PHP. Na przykład, w .htaccess lub definicji vhost, można ułożyć wszystkie wnioski za pomocą jednego uchwytu, ewentualnie index.php:

# Don't rewrite requests for e.g. assets 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*+)$ index.php?q=$1 [L] 

... następnie w pliku index.php zrobić coś takiego:

$target = $_REQUEST['q']; 
/* parse the request and include the appropriate controller PHP */ 

Na przykład żądanie dotyczące /products/1234 może spowodować dołączenie obsługi controllers/products.php. Ten handler może następnie działać na produkcie 1234. Ponieważ używasz usługi REST, nie powinieneś przejmować się oryginalnym żądaniem, które ma parametr ciągu zapytania.

Istnieje wiele sposobów, aby osiągnąć to, co brzmi, jak próbujesz zrobić, to tylko jeden z nich. Ostatecznie to, z czym będziesz współpracować, zależy od Twoich konkretnych wymagań. Powyższy wzór jest dość powszechny, jednak wiele frameworków używa go lub coś w tym stylu.

Pozdrowienia

+0

Mam zamiar dać temu spróbować .. nie mam dużego doświadczenia z edycją .htaccess, ale spróbuję przeczytać na nim –

+0

Świetnie. Jeśli uważasz, że odpowiedziałem na twoje pytanie, rozważ zaakceptowanie tego. http://stackoverflow.com/faq#howtoask – Madbreaks

+0

Zrobię, zwykle czekam, aż zrozumiem problem –

0

Myślę, że to kwestia terminologii. Każdy kod z pewnym poziomem generalizacji można nazwać "strukturą". A ponieważ pytasz o "routing", który zapewnia początkowy poziom generalizacji, każda implementacja staje się ramą.

Jeśli nie chcesz korzystać z istniejących pełnowymiarowych frameworków, możesz opracować własną, lekką implementację. Oto niektóre artykuły, aby rozpocząć:

Wszystkie te intra zawierają wyjaśnienia dotyczące Mechanizmu routingu i wykazania jego realizację.

Zasadniczo router jest rodzajem wewnętrznego "DNS" (w sensie przenośnym) wewnątrz aplikacji. Kiedy żądanie dotrze do Twojej witryny, musisz wysłać ją do odpowiedniej klasy pracownika, zgodnie z właściwościami tego żądania. To jest zadanie routera.

+0

Uważam, że pytanie op jest dość szczegółowe: jak kierować żądania do odpowiedniego kontrolera ... * nie * jak zaimplementować strukturę MVC. – Madbreaks

+0

Wszystkie dokumenty dotyczące samodzielnie wykonanych MVC opisują bardzo dobrze aspekt routingu. – Stan

+0

Drugi link jest martwy – Goose

Powiązane problemy