🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #232249

Re: Serwer REST

#232249
From: 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
Technical Details
Message-ID: <slrnq50gcs.29i4.wojciech.bancer@pl-test.org>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <1t1f1d2pfc90d.dlg@tyczka.com> <slrnq503uh.25n9.wojciech.bancer@pl-test.org> <1jylb29ds7hxx.dlg@tyczka.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Newsgroups: pl.comp.lang.php
From: Wojciech Bancer <wojciech.bancer@gmail.com>
Subject: Re: Serwer REST
References: <1t1f1d2pfc90d.dlg@tyczka.com> <slrnq503uh.25n9.wojciech.bancer@pl-test.org> <1jylb29ds7hxx.dlg@tyczka.com>
Organization: None
Date: Tue, 29 Jan 2019 13:05:47 +0100
User-Agent: slrn/1.0.3 (Darwin)
Mime-Version: 1.0
Message-ID: <slrnq50gcs.29i4.wojciech.bancer@pl-test.org>
Lines: 56
NNTP-Posting-Host: 46.227.242.29
X-Trace: 1548763548 unt-rea-b-01.news.neostrada.pl 507 46.227.242.29:56577
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit