🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
11 messages
11 total messages Started by Roman Tyczka Mon, 28 Jan 2019 13:44
Serwer REST
#232240
Author: Roman Tyczka
Date: Mon, 28 Jan 2019 13:44
9 lines
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
#232241
Author: Marek S
Date: Mon, 28 Jan 2019 20:49
20 lines
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
#232242
Author: Roman Tyczka
Date: Tue, 29 Jan 2019 08:07
50 lines
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
#232247
Author: Wojciech Bancer
Date: Tue, 29 Jan 2019 08:33
14 lines
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
#232245
Author: Wojciech Bancer
Date: Tue, 29 Jan 2019 08:42
37 lines
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
#232248
Author: Roman Tyczka
Date: Tue, 29 Jan 2019 10:58
21 lines
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
#232249
Author: Wojciech Bancer
Date: Tue, 29 Jan 2019 12:05
56 lines
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
#232250
Author: Borys Pogoreło
Date: Tue, 29 Jan 2019 14:45
14 lines
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
#232246
Author: Borys Pogoreło
Date: Tue, 29 Jan 2019 14:48
13 lines
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
#232243
Author: Marek S
Date: Tue, 29 Jan 2019 21:04
54 lines
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
#232244
Author: Roman Tyczka
Date: Wed, 30 Jan 2019 07:33
79 lines
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