Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][SF2][Symfony2]RestApi
Forum PHP.pl > Forum > PHP > Frameworki
webmaniak
Witam,
Chcę zbudować API w symfony 2(2.6.3). Nie chcę korzystać z FOSRestController - przynajmniej nie w tej chwili - być może w przyszłości. Moja koncepcja jest taka żeby zbudować jeden kontroler ApiController który wywoła odpowiednią akcję podaną w parametrach ścieżki. Czyli chodzi mi o coś takiego jak tu:
http://code.tutsplus.com/tutorials/creatin...tion--net-23417
tyle że w symfony2 - tam jest jeden plik wywołujący pozostałe. Mam jednak wątpliwości czy moja koncepcja jest prawidłowy podejściem. Ponadto nie wiem jaki routing utworzyć by była możliwość podania akcji i kilki parametrów.
Jeśli ta koncepcja jest zła to będę wdzięczny za podanie jakiejś alternatywnej smile.gif Tylko proszę - nie odsyłajcie do artykułów:
http://welcometothebundle.com/symfony2-res...-best-2013-way/
czy right way czy easy way - widziałem to i stworzyłem przykładowe projekty na tym - są one oparte na FOSRestBundle a nie chce z niego korzystać bo uważam że nie ma potrzeby wykorzystywania takiej "kobyły".
Z góry dzięki smile.gif
Forti
Ja ci powiem jak ja to zrobiłem.

Routing ma tylko:

Www.strona.pl/{url}

I wsio

W modelu z kolei parsuje zmienna url., np.:
produkt:ccc-xxx-vvd--najnowsze--2

Rozbijasz wg. --, jezeli int i ostatnie to wiadomo ze paginacja
Pierwsze to np. Lista produktów itp.
Drugie to np parametr do sortowania wyników. Sprawdzasz czy istnieje w jakiej sobie tan zdefiniowanej tablicy
Itp.

Routing triche ogranicza bo jak nie podasz sortowania to albo ustawisz domyślnie albo wywali error. A jak np. Nie podasz filtrów (Parametr 1) to tez troche problem będzie
Najłatwiej moim zdaniem ustalić sobie takie ścieżki. Ewentualnie możesz robic zwykly get:

Www.strona.pl?parametr=cccc?sort=xxx?page=2
Pyton_000
Forti, to nie jest REST API. To jakieś coś dziwnego...

http://williamdurand.fr/2012/08/02/rest-ap...-the-right-way/
albo
FOSRestBundle


I lepiej się tym od razu zainteresuj niż praktykować jakieś dziwne nawyki.
Jeżeli chcesz REST API jakieś od podstaw (aplikacja od podstaw) to polecam laravela do tego. Tam się błyskawicznie to buduje.
Forti
Wiem ze nie jest tongue.gif ale gościu chcial cos szybkiego i lekkiego wiec mu podalem szybkie i lekkie rozwiązanie. Hihi tongue.gif
webmaniak
@Forti no właśnie z parametrami nie wiedziałem jak zrobić.
@Pyton_000 - spójrz proszę na mój pierwszy post - pisałeem tam o tych linkach -nie są mi obce smile.gif tylko z tego co ja tam widzę to muszę dla każdej akcji definiować konkretny routing itd., a chciałbym w jednym kontrolerze odpalać inne akcje.
Pyton_000
Tak doczytałem właśnie ;P

Co do route to tak, musisz to robić.
Ale Albo chcesz REST API albo API.
Forti
Test api brzmi lepiej tongue.gif
webmaniak
Czy krótko mówiąc wg Was moja koncepcja jest błędna? zostaje mi tylko FOSRestApi czy mogę bez tego bundla sobie poradzić?
@Pyton_000 - widzę że mam braki w definicjach - możesz napisać mi czym różni się API od RestAPI lub przytoczyć link z opisem? Bo chyba już się w tym pogubiłem ;/
Pyton_000
RESTful API botak to się dokłanie nazywa to cała koncepcja i "standard" w jaki sposób jest realizowany dostęp do zasobów.
API to po prostu API, może byc SOAP, XML, JSON czy cokolwiek innego. taka ogólna definicja. Po prostu dostęp do zasobów. Może być dowolnie implementowany.
webmaniak
Dzięki Panowie za pochylenie się nad moimi wątpliwościami smile.gif
@Pyton chciałbym zbudować API w symfony ale wszystkie artykuły o symfony i api dotyczą RESTful API. Zapewne wybiorę jednak FOSRestBundle i tak to się skończy smile.gif
Dziękuję jeszcze raz smile.gif
mstraczkowski
Ja ostatnio trochę się bawiłem z REST API i używałem do tego celu Silex
Dosyć przyjemnie mi się z nim pracowało.
skowron-line
Bez FOSRestBundla też sobie poradzisz.
Wystarczy odpowiednia konfiguracja linków aby móc wykonywać odpowiednie zadania.
jezeli ustalisz sobie adres domena.pl/api/costam, to w routingu mozesz sobie ustawic aby
  1. <route id="abc" path="/{urlname}" method="GET">
  2. <default key="_controller">Controller:get</default>
  3. </route>
  4.  
  5. <route id="abc" path="/{urlname}" method="POST">
  6. <default key="_controller">Controller:insert</default>
  7. </route>
  8.  
  9. <route id="abc" path="/{urlname}" method="PUT">
  10. <default key="_controller">Controller:update</default>
  11. </route>
  12.  
  13. <route id="abc" path="/{urlname}" method="DELET">
  14. <default key="_controller">Controller:delete</default>
  15. </route>

taki routing wrzucasz do osobnego pliku i includujac go w glownym routingu dajesz opcje prefix: /api
i masz piekne linki domena.pl/api/urlname

Dodatkowo możesz żeby za każdym razem nie robić json_encode, zlap się na responsie i lisenerem zmieniaj to w zależności o co poprosi user (jeżeli zakladasz ze bedzie chcial JSON|XML)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.