Thread View: pl.comp.lang.php
11 messages
11 total messages
Started by Roman Tyczka
Mon, 28 Jan 2019 13:44
Serwer REST
Author: Roman Tyczka
Date: Mon, 28 Jan 2019 13:44
Date: Mon, 28 Jan 2019 13:44
9 lines
941 bytes
941 bytes
Witam, Potrzebuję w PHP wystawić prościutkie API restowe, kilka metod odczytujących i zapisujących coś do bazy. Jakiej biblioteki PHP użyć bym nie stracił na to kilku dni uczenia? -- pozdrawiam Roman Tyczka
Re: Serwer REST
Author: Marek S
Date: Mon, 28 Jan 2019 20:49
Date: Mon, 28 Jan 2019 20:49
20 lines
1638 bytes
1638 bytes
W dniu 2019-01-28 o 14:44, Roman Tyczka pisze: > Witam, > > Potrzebuję w PHP wystawić prościutkie API restowe, kilka metod > odczytujących i zapisujących coś do bazy. > Jakiej biblioteki PHP użyć bym nie stracił na to kilku dni uczenia? A po co Ci to? REST jest tak banalny, że nie potrzebuje żadnego serwera. Sadzasz skrypt PHP pod danym URL, który odpowiada JSON'em zapytany również JSON'em i pozamiatane. Do bazy danych też potrzebujesz jakiś bibliotek??? Przecież to parę linijek kodu w natywnym PHP. Jeśli zamiast opanować podstawy PHP chcesz korzystać od razu z frameworków, bibliotek, to szczerze mówiąc więcej będziesz tracił na tym czasu. Nie wspomnę o tym, że nigdy nie nauczysz się programowania w ten sposób. -- Pozdrawiam, Marek
Re: Serwer REST
Author: Roman Tyczka
Date: Tue, 29 Jan 2019 08:07
Date: Tue, 29 Jan 2019 08:07
50 lines
2946 bytes
2946 bytes
On Mon, 28 Jan 2019 21:49:54 +0100, Marek S wrote: >> Potrzebuję w PHP wystawić prościutkie API restowe, kilka metod >> odczytujących i zapisujących coś do bazy. >> Jakiej biblioteki PHP użyć bym nie stracił na to kilku dni uczenia? > > A po co Ci to? REST jest tak banalny, że nie potrzebuje żadnego serwera. > Sadzasz skrypt PHP pod danym URL, który odpowiada JSON'em zapytany > również JSON'em i pozamiatane. Niby tak, a jednak nie do końca. Po co mam zajmować się parsowaniem requesta? Serializacją odpowiedzi, itd.? Tym wszystkim może się zająć jakaś biblioteka, a ja skupię się na meritum problemu. Pisanie za każdym razem tego samego od podstaw jest nieporozumieniem. Znalazłem takie coś i chyba mi wystarczy: https://github.com/jacwright/RestServer choć pytam, bo może jest coś bardziej popularnego. > Do bazy danych też potrzebujesz jakiś > bibliotek??? Przecież to parę linijek kodu w natywnym PHP. Oczywiście, że używam PDO a nie rzeźbię ręcznie po drajwerze DB, nawet mi się nie chce wyliczać zalet. Dziwią mnie takie pytania od programisty. > Jeśli zamiast opanować podstawy PHP chcesz korzystać od razu z > frameworków, bibliotek, to szczerze mówiąc więcej będziesz tracił na tym > czasu. Czas stracony na poznanie bibliotek i frameworków, całkiem rzeczywiście spory, zwróci się z nawiązką po kilku projektach. Poza tym, gdy dostanie się do poprawy projekt z zewnątrz to gdy jest on napisany na bazie jakichś frameworków to da się go ogarnąć, gdy się je zna. Gdy zaś jest to wytwór czyjejś wyobraźni i wydajemisia to... nie życzę takiego masochizmu. > Nie wspomnę o tym, że nigdy nie nauczysz się programowania w ten > sposób. Programowania jako takiego uczyć się nie muszę, bo już w życiu się sporo napisałem, a właśnie poznanie ekosystemu każdego z języków, czy to PHP (właśnie rozkminiam Composera) czy to JS jest czasochłonne i kluczowe, bo to odróżnia języki, a nie sama składnia, która w językach imperatywnych jest bardzo podobna. -- pozdrawiam Roman Tyczka
Re: Serwer REST
Author: Wojciech Bancer
Date: Tue, 29 Jan 2019 08:33
Date: Tue, 29 Jan 2019 08:33
14 lines
1144 bytes
1144 bytes
On 2019-01-28, Roman Tyczka <noemail@because.no> wrote: [...] > Potrzebuję w PHP wystawić prościutkie API restowe, kilka metod > odczytujących i zapisujących coś do bazy. > Jakiej biblioteki PHP użyć bym nie stracił na to kilku dni uczenia? To jest teraz na topie: https://api-platform.com/ -- Wojciech Bańcer wojciech.bancer@gmail.com
Re: Serwer REST
Author: Wojciech Bancer
Date: Tue, 29 Jan 2019 08:42
Date: Tue, 29 Jan 2019 08:42
37 lines
2470 bytes
2470 bytes
On 2019-01-28, Marek S <precz@spamowi.com> wrote:
[...]
>> Potrzebuję w PHP wystawić prościutkie API restowe, kilka metod
>> odczytujących i zapisujących coś do bazy.
>> Jakiej biblioteki PHP użyć bym nie stracił na to kilku dni uczenia?
>
> A po co Ci to? REST jest tak banalny, że nie potrzebuje żadnego serwera.
> Sadzasz skrypt PHP pod danym URL, który odpowiada JSON'em zapytany
> również JSON'em i pozamiatane.
1/ A co z parsowaniem parametrów z URLa? (np. /products, /products/{id}, /products/{id}/status)
2/ Co z walidowaniem całych obiektów JSONowych?
3/ Co z rozróżnianiem metod zapytań (GET/POST/PUT/DELETE) i routingu?
4/ Co z definiowaniem reguł CORS?
5/ Co z ew. obsługą autoryzacji użytkownika (choćby tokenem)?
To wszystko podpada pod "prosty REST".
> Do bazy danych też potrzebujesz jakiś
> bibliotek??? Przecież to parę linijek kodu w natywnym PHP.
Zmieść się w 100 linijkach kodu z walidacją i parsowaniem routingu
(i wyciąganiem parametrów z URLa). I dare you.
> Jeśli zamiast opanować podstawy PHP chcesz korzystać od razu z
> frameworków, bibliotek, to szczerze mówiąc więcej będziesz tracił na tym
> czasu. Nie wspomnę o tym, że nigdy nie nauczysz się programowania w ten
> sposób.
Implementacja takich funkcji nie uczy języka, tylko uczy korzystania
z funkcji wbudowanych.
--
Wojciech Bańcer
wojciech.bancer@gmail.com
Re: Serwer REST
Author: Roman Tyczka
Date: Tue, 29 Jan 2019 10:58
Date: Tue, 29 Jan 2019 10:58
21 lines
1623 bytes
1623 bytes
On Tue, 29 Jan 2019 09:33:20 +0100, Wojciech Bancer wrote: >> Potrzebuję w PHP wystawić prościutkie API restowe, kilka metod >> odczytujących i zapisujących coś do bazy. >> Jakiej biblioteki PHP użyć bym nie stracił na to kilku dni uczenia? > > To jest teraz na topie: > https://api-platform.com/ Dzięki, wygląda interesująco, ale to jest raczej olbrzymi kombajn a nie mały cusiek do rozkminy w kilka godzin. Zapisuje do zakładek i będę powoli trawił, ale na już czegoś małego potrzebuję, chyba wezmę to co sam znalazłem na razie. ps. dzięki Twojemu linkowi dowiedziałem się o GraphiQLu, bardzo fajna sprawa! Muszę się temu przyjrzeć bliżej, bo to rewolucjonizuje tematykę API, i uzdrawia, bo REST jednak jest trochę przegadany. -- pozdrawiam Roman Tyczka
Re: Serwer REST
Author: Wojciech Bancer
Date: Tue, 29 Jan 2019 12:05
Date: Tue, 29 Jan 2019 12:05
56 lines
2634 bytes
2634 bytes
On 2019-01-29, Roman Tyczka <noemail@because.no> wrote:
> On Tue, 29 Jan 2019 09:33:20 +0100, Wojciech Bancer wrote:
>
>>> Potrzebuję w PHP wystawić prościutkie API restowe, kilka metod
>>> odczytujących i zapisujących coś do bazy.
>>> Jakiej biblioteki PHP użyć bym nie stracił na to kilku dni uczenia?
>>
>> To jest teraz na topie:
>> https://api-platform.com/
>
> Dzięki, wygląda interesująco, ale to jest raczej olbrzymi kombajn a nie
> mały cusiek do rozkminy w kilka godzin. Zapisuje do zakładek i będę powoli
> trawił, ale na już czegoś małego potrzebuję, chyba wezmę to co sam
> znalazłem na razie.
Z takiego pobieżnego "rzutu okiem", to goły Symfony ma podobną funkcjonalność, np.:
/**
* @Route("/api")
*/
class ApiController
{
/**
* @Route("/study/{study}/report/{report}", methods={"GET"}, defaults={"_format"="json"})
*/
public function getReportDetails(Study $study, StudyReport $report)
{
// .../
return new JsonResponse([
'status' => 'ok',
'data' => $report->getSelectedData(),
'options' => $report->getOptions()
]);
}
}
a obiekt wysłany POSTem możesz pobrać przez:
$data = json_decode($request->getContent(), true);
i dalej potraktować np. albo przez json schema validator,
albo przez walidatory wbudowane w symfony (czyli stworzenie
klasy FormType).
CORS załatwia:
https://github.com/nelmio/NelmioCorsBundle
(albo ustawienia serwera).
Przy czym warto pamiętać, że jak chcesz obsługiwać ruch z frameworków,
to one często wysyłają najpierw na ten sam URL request z metodą OPTION,
zeby właśnie zweryfikować CORSy. :)
--
Wojciech Bańcer
wojciech.bancer@gmail.com
Re: Serwer REST
Author: Borys Pogoreło
Date: Tue, 29 Jan 2019 14:45
Date: Tue, 29 Jan 2019 14:45
14 lines
1440 bytes
1440 bytes
Dnia Tue, 29 Jan 2019 11:58:27 +0100, Roman Tyczka napisał(a): > ps. dzięki Twojemu linkowi dowiedziałem się o GraphiQLu, bardzo fajna > sprawa! Muszę się temu przyjrzeć bliżej, bo to rewolucjonizuje tematykę > API, i uzdrawia, bo REST jednak jest trochę przegadany. Raczej zbyt prymitywny, a jest traktowany jako jedyne słuszne rozwiązanie (zresztą, o samą definicję REST też można się kłócić). GraphQL to super sprawa, ale w zasadzie sensowna tylko do odczytu danych. Mutacje są tam potraktowane bardzo po macoszemu. -- Borys Pogoreło borys(#)leszno,edu,pl
Re: Serwer REST
Author: Borys Pogoreło
Date: Tue, 29 Jan 2019 14:48
Date: Tue, 29 Jan 2019 14:48
13 lines
1276 bytes
1276 bytes
Dnia Tue, 29 Jan 2019 09:42:21 +0100, Wojciech Bancer napisał(a): >> Do bazy danych też potrzebujesz jakiś >> bibliotek??? Przecież to parę linijek kodu w natywnym PHP. > > Zmieść się w 100 linijkach kodu z walidacją i parsowaniem routingu > (i wyciąganiem parametrów z URLa). I dare you. Oj tam, dobry regexp i jeszcze zostanie trochę linijek na komentarze ;) -- Borys Pogoreło borys(#)leszno,edu,pl
Re: Serwer REST
Author: Marek S
Date: Tue, 29 Jan 2019 21:04
Date: Tue, 29 Jan 2019 21:04
54 lines
3064 bytes
3064 bytes
W dniu 2019-01-29 o 09:07, Roman Tyczka pisze: > Niby tak, a jednak nie do końca. Po co mam zajmować się parsowaniem > requesta? Serializacją odpowiedzi, itd.? Tym wszystkim może się zająć jakaś > biblioteka, a ja skupię się na meritum problemu. Pisanie za każdym razem > tego samego od podstaw jest nieporozumieniem. Parsowanie to 1 linijka kodu przecież! http://php.net/manual/pl/function.json-decode.php Dostęp do bazy, to niewiele więcej. Właśnie dlatego napisałem, że podstawami PHP powinieneś się zająć. Zabierasz się za temat od końca. > https://github.com/jacwright/RestServer > > choć pytam, bo może jest coś bardziej popularnego. Pewnie jest, ale to wygląda tak jakbyś dzwonił do zarządu Coca-Coli z zapytaniem czy mają otwieracz do ich butelek. > Oczywiście, że używam PDO a nie rzeźbię ręcznie po drajwerze DB, nawet mi > się nie chce wyliczać zalet. Dziwią mnie takie pytania od programisty. Chyba zaczynam rozumieć dlaczego aż tylu developerów PHP w firmie, w jakiej pracuję jest odsiewanych. Nie kumają co to SQL, klucz obcy, trigger, indeks, polimorfizm, klasa abstrakcyjna i takie tam. Trzepią aplikacje na frameworkach i nie kumają świata. Wystąpi problem np. z wydajnością i jest wielkie "ojej". Aby używać frameworków należy rozumieć podstawy. Zamiast ładowania pierdyliona bibliotek czasem wystarczy jedna linijka kodu w PHP czy JS. > Czas stracony na poznanie bibliotek i frameworków, całkiem rzeczywiście > spory, zwróci się z nawiązką po kilku projektach. Jasne, ale warto pomyśleć o emeryturze. Zrobisz parę szablonowych sklepów nie rozumiejąc jak działają i co dalej? Dobra, nie moja sprawa. Zapędziłem się. > Programowania jako takiego uczyć się nie muszę, bo już w życiu się sporo > napisałem, a właśnie poznanie ekosystemu każdego z języków, czy to PHP > (właśnie rozkminiam Composera) Composer, to jedna z podstaw poziomu #2, gdy ogarnie się #1. Poradziłem Ci zgodnie z moim sumieniem. Nie chcę Cię nakłaniać do niczego. Rób jak chcesz. -- Pozdrawiam, Marek
Re: Serwer REST
Author: Roman Tyczka
Date: Wed, 30 Jan 2019 07:33
Date: Wed, 30 Jan 2019 07:33
79 lines
4061 bytes
4061 bytes
On Tue, 29 Jan 2019 22:04:54 +0100, Marek S wrote: >> Niby tak, a jednak nie do końca. Po co mam zajmować się parsowaniem >> requesta? Serializacją odpowiedzi, itd.? Tym wszystkim może się zająć jakaś >> biblioteka, a ja skupię się na meritum problemu. Pisanie za każdym razem >> tego samego od podstaw jest nieporozumieniem. > > Parsowanie to 1 linijka kodu przecież! > http://php.net/manual/pl/function.json-decode.php Nie chodziło o parsowanie JSOna tylko tak ja napisał Wojtek, parsowanie parametrów. > Dostęp do bazy, to niewiele więcej. > > Właśnie dlatego napisałem, że podstawami PHP powinieneś się zająć. > Zabierasz się za temat od końca. Ale ja to umiem, tylko to są czasochłonne banały i chcę optymalizować czas. >> https://github.com/jacwright/RestServer >> >> choć pytam, bo może jest coś bardziej popularnego. > > Pewnie jest, ale to wygląda tak jakbyś dzwonił do zarządu Coca-Coli z > zapytaniem czy mają otwieracz do ich butelek. Kto jest tym zarządem coca-coli, bo nie chwytam analogii? >> Oczywiście, że używam PDO a nie rzeźbię ręcznie po drajwerze DB, nawet mi >> się nie chce wyliczać zalet. Dziwią mnie takie pytania od programisty. > > Chyba zaczynam rozumieć dlaczego aż tylu developerów PHP w firmie, w > jakiej pracuję jest odsiewanych. Nie kumają co to SQL, klucz obcy, > trigger, indeks, polimorfizm, klasa abstrakcyjna i takie tam. Trzepią > aplikacje na frameworkach i nie kumają świata. Wystąpi problem np. z > wydajnością i jest wielkie "ojej". Ale Ty nie czytasz uważnie. Ja nie jestem na etapie "uczę się programowania" tylko "poznaję środowisko PHP i JS". Jestem też autorem wielu innych aplikacji, w tym serwera RESTowego na którym działa wiele mikroserwisów i tam optymalizacja jest na pierwszym miejscu. Tam też podpięte jest kilka niezależnych baz i wyobraź sobie używam SQLa, którego zresztą używam od blisko 20 lat. > Aby używać frameworków należy rozumieć podstawy. Zamiast ładowania > pierdyliona bibliotek czasem wystarczy jedna linijka kodu w PHP czy JS. Gdy wystarczy jedna linijka tak robię, tu nie wystarczy. >> Czas stracony na poznanie bibliotek i frameworków, całkiem rzeczywiście >> spory, zwróci się z nawiązką po kilku projektach. > > Jasne, ale warto pomyśleć o emeryturze. Zrobisz parę szablonowych > sklepów nie rozumiejąc jak działają i co dalej? Skąd załóżenie, że nie rozumiem jak to działa?? > Dobra, nie moja sprawa. Zapędziłem się. Troszkę tak. >> Programowania jako takiego uczyć się nie muszę, bo już w życiu się sporo >> napisałem, a właśnie poznanie ekosystemu każdego z języków, czy to PHP >> (właśnie rozkminiam Composera) > > Composer, to jedna z podstaw poziomu #2, gdy ogarnie się #1. Łatwiej się ogarnia pierwszy, gdy Composera się umie używać. Tak samo w JS łatwiej pisać modułowo i przejrzyście, gdy używasz bundlepackera, itd. > Poradziłem Ci zgodnie z moim sumieniem. Nie chcę Cię nakłaniać do > niczego. Rób jak chcesz. Dzięki. -- pozdrawiam Roman Tyczka
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads