Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.php > #16030 > unrolled thread
| Started by | Roman Tyczka <noemail@because.no> |
|---|---|
| First post | 2019-01-28 14:44 +0100 |
| Last post | 2019-01-29 15:45 +0100 |
| Articles | 11 — 4 participants |
Back to article view | Back to pl.comp.lang.php
Serwer REST Roman Tyczka <noemail@because.no> - 2019-01-28 14:44 +0100
Re: Serwer REST Marek S <precz@spamowi.com> - 2019-01-28 21:49 +0100
Re: Serwer REST Roman Tyczka <noemail@because.no> - 2019-01-29 09:07 +0100
Re: Serwer REST Marek S <precz@spamowi.com> - 2019-01-29 22:04 +0100
Re: Serwer REST Roman Tyczka <noemail@because.no> - 2019-01-30 08:33 +0100
Re: Serwer REST Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-01-29 09:42 +0100
Re: Serwer REST Borys Pogoreło <borys@pl.edu.leszno> - 2019-01-29 15:48 +0100
Re: Serwer REST Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-01-29 09:33 +0100
Re: Serwer REST Roman Tyczka <noemail@because.no> - 2019-01-29 11:58 +0100
Re: Serwer REST Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-01-29 13:05 +0100
Re: Serwer REST Borys Pogoreło <borys@pl.edu.leszno> - 2019-01-29 15:45 +0100
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2019-01-28 14:44 +0100 |
| Subject | Serwer REST |
| Message-ID | <1t1f1d2pfc90d.dlg@tyczka.com> |
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
[toc] | [next] | [standalone]
| From | Marek S <precz@spamowi.com> |
|---|---|
| Date | 2019-01-28 21:49 +0100 |
| Message-ID | <q2nptj$i5b$1@node1.news.atman.pl> |
| In reply to | #16030 |
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
[toc] | [prev] | [next] | [standalone]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2019-01-29 09:07 +0100 |
| Message-ID | <4tbtumqdtp7y.dlg@tyczka.com> |
| In reply to | #16031 |
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
[toc] | [prev] | [next] | [standalone]
| From | Marek S <precz@spamowi.com> |
|---|---|
| Date | 2019-01-29 22:04 +0100 |
| Message-ID | <q2qf5o$cqh$1@node2.news.atman.pl> |
| In reply to | #16032 |
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
[toc] | [prev] | [next] | [standalone]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2019-01-30 08:33 +0100 |
| Message-ID | <npxkoiuu2lgn.dlg@tyczka.com> |
| In reply to | #16039 |
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
[toc] | [prev] | [next] | [standalone]
| From | Wojciech Bancer <wojciech.bancer@gmail.com> |
|---|---|
| Date | 2019-01-29 09:42 +0100 |
| Message-ID | <slrnq504fj.25n9.wojciech.bancer@pl-test.org> |
| In reply to | #16031 |
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
[toc] | [prev] | [next] | [standalone]
| From | Borys Pogoreło <borys@pl.edu.leszno> |
|---|---|
| Date | 2019-01-29 15:48 +0100 |
| Message-ID | <179yymq0py1ez$.emuq12mccbgq.dlg@40tude.net> |
| In reply to | #16034 |
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
[toc] | [prev] | [next] | [standalone]
| From | Wojciech Bancer <wojciech.bancer@gmail.com> |
|---|---|
| Date | 2019-01-29 09:33 +0100 |
| Message-ID | <slrnq503uh.25n9.wojciech.bancer@pl-test.org> |
| In reply to | #16030 |
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
[toc] | [prev] | [next] | [standalone]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2019-01-29 11:58 +0100 |
| Message-ID | <1jylb29ds7hxx.dlg@tyczka.com> |
| In reply to | #16033 |
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
[toc] | [prev] | [next] | [standalone]
| From | Wojciech Bancer <wojciech.bancer@gmail.com> |
|---|---|
| Date | 2019-01-29 13:05 +0100 |
| Message-ID | <slrnq50gcs.29i4.wojciech.bancer@pl-test.org> |
| In reply to | #16035 |
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
[toc] | [prev] | [next] | [standalone]
| From | Borys Pogoreło <borys@pl.edu.leszno> |
|---|---|
| Date | 2019-01-29 15:45 +0100 |
| Message-ID | <1q4m411ptlzrw$.1or4mj5nyxzig.dlg@40tude.net> |
| In reply to | #16035 |
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
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.lang.php
csiph-web