Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][SF2][Symfony2]RestApi
webmaniak
post
Post #1





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Forti
post
Post #2





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Pyton_000 6.02.2015, 09:12:22
Go to the top of the page
+Quote Post
Forti
post
Post #4





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Wiem ze nie jest (IMG:style_emoticons/default/tongue.gif) ale gościu chcial cos szybkiego i lekkiego wiec mu podalem szybkie i lekkie rozwiązanie. Hihi (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
webmaniak
post
Post #5





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

Ostrzeżenie: (0%)
-----


@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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Tak doczytałem właśnie ;P

Co do route to tak, musisz to robić.
Ale Albo chcesz REST API albo API.
Go to the top of the page
+Quote Post
Forti
post
Post #7





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

Ostrzeżenie: (0%)
-----


Test api brzmi lepiej (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
webmaniak
post
Post #8





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

Ostrzeżenie: (0%)
-----


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 ;/

Ten post edytował webmaniak 6.02.2015, 09:24:50
Go to the top of the page
+Quote Post
Pyton_000
post
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
webmaniak
post
Post #10





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

Ostrzeżenie: (0%)
-----


Dzięki Panowie za pochylenie się nad moimi wątpliwościami (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Dziękuję jeszcze raz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mstraczkowski
post
Post #11





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
skowron-line
post
Post #12





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 14:20