• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PUT, PATCH - Update modelu i upload pliku

Object Storage Arubacloud
+1 głos
468 wizyt
pytanie zadane 30 sierpnia 2016 w PHP przez xandros Nałogowiec (29,450 p.)
edycja 30 sierpnia 2016 przez xandros
Do rzeczy:

REST webservice wraz z PSR-7.

Próbuje zrobić aktualizacje wpisu/użytkownika/cokolwiek innego ze zmianą dołączonego do niego pliku (np. awatara). Według zasad powinno to być zrobione za pomocą requesta metodą PUT albo PATCH.
Kłopot w tym, że php nie parsuje php://input do globalniej $_FILES, tak jak jest to w przypadku POST. Jeśli nie ma $_FILES, to UploadedFile z requesta jest pusty.

Z tego, co udało mi się wygooglować/ktoś mi pomogł, to mogę wysyłać POST z argumentem _method i po middleware zmieniać requesta przez metode withMethod. Tak robi laravel. Jest to słabe o tyle, że client i tak musi wykonać requesta przez POST, a nie PUT/PATCH.

Inną opcją jest parsowanie body requesta, ale trochę jest z tym kombinowania, więc podchodzi to pod KISS. Chyba że są jakieś narzędzia do tego.

Inną opcją jest po prostu rzucanie update przez POST, ale wtedy nie mamy RESTfula.

Wasze propozycje?
komentarz 31 sierpnia 2016 przez xandros Nałogowiec (29,450 p.)

Widziałem, ale: 

Inną opcją jest parsowanie body requesta, ale trochę jest z tym kombinowania

 =/

komentarz 31 sierpnia 2016 przez SyntaxError Pasjonat (17,170 p.)
To jest dużo kombinowania? :D Serio jak dla mnie to jest to lepsze niż jakiś middleware, który to wygląda w tym przypadku jak łatanie dziury w drodze plombą od dentysty.
komentarz 31 sierpnia 2016 przez xandros Nałogowiec (29,450 p.)
A gdzie indziej niby miałbym to wstawić niż w middleware?

Przepakować kontroler? Czy może do modelu przed walidacją?
komentarz 31 sierpnia 2016 przez SyntaxError Pasjonat (17,170 p.)
Chodziło mi o ten konkretny middleware z _method i withMethod. Sorry, źle się wyraziłem.

2 odpowiedzi

0 głosów
odpowiedź 30 sierpnia 2016 przez event15 Szeryf (93,790 p.)

Inną opcją jest po prostu rzucanie update przez POST, ale wtedy nie mamy RESTfula.

A czy Twój RESTful jest zgodny w HATEOAS i jest samodokumentujący? Jeśli nie - to zrób najprościej jak się da w tym wypadku. Jeśli mówisz o RESTful to jest maasa rzeczy o których w ogóle ludziom się nie śniło jeszcze.  

1
komentarz 30 sierpnia 2016 przez Comandeer Guru (601,530 p.)

A czy Twój RESTful jest zgodny w HATEOAS i jest samodokumentujący?

Jak jeszcze HATEOAS przełknę, tak mrzonka o samodokumentującym się REST API mnie zawsze bawi na tyle, że zaliczam ROTFL-a. Nie ma czegoś takiego jak "samodokumentujące się REST API". No nie ma. 

komentarz 31 sierpnia 2016 przez event15 Szeryf (93,790 p.)
I raczej nie będzie - więc nie powiemy raczej o tym, że nasze API jest RESTful, tylko zbliżone do niego.

Aczkolwiek próby są: https://github.com/justintv/Twitch-API#self-describing-api

:D
komentarz 31 sierpnia 2016 przez Comandeer Guru (601,530 p.)
Skoro dana rzecz nie istnieje i nie da się jej stworzyć, to po co tworzyć ich definicje i wierzyć w nie? To mnie drażni w tej rozdmuchanej nomenklaturze strasznie.
komentarz 31 sierpnia 2016 przez event15 Szeryf (93,790 p.)
Einstein również stworzył matematyczny opis czarnej dziury, która to została potwierdzona lata po jego śmierci.

To normalna cecha towarzysząca rozwojowi. RBAC też został opisany a nigdzie nie został zrobiony na tyle dobry odpowiednik jego aby był godny większej uwagi. A idea świetna i dużo bardziej sprawdza się w rozbudowanych przykładach niż ACL.

Nie ma co się pieklić, kiedyś albo to zupełnie padnie, umrze śmiercią naturalną, albo rozwinie skrzydła i znajdzie sobie drogę do "normalności"
1
komentarz 31 sierpnia 2016 przez Comandeer Guru (601,530 p.)

Einstein również stworzył matematyczny opis czarnej dziury, która to została potwierdzona lata po jego śmierci.

A od kiedy programowanie to wydumana nauka nad rzeczami, które i tak nigdy nam się nie przydadzą oprócz samego faktu pogłębienia przez nie wiedzy?

Programowanie ma rozwiązywać realne problemy. Nie rozwiązuje, to coś poszło nie tak. Tyle. 

Wymyślanie super zawiłych podstaw teoretycznych i modlenie się do nich nie oznacza rozwoju. To gonienie za własnym ogonem.

0 głosów
odpowiedź 11 października 2016 przez xandros Nałogowiec (29,450 p.)
To tak btw:

Slim tak samo jak Laravel ma fallbacka w postaci dodatkowego parametru. Jak się doda do paramsów zmienną "_METHOD" (wielkość liter jest ważna), to zmienia request method.

Szkoda, że jak się wysyła patcha/puta, to trzeba samemu parsować dane, bo na php nie ma co polegać...

Podobne pytania

0 głosów
2 odpowiedzi 905 wizyt
pytanie zadane 15 czerwca 2016 w PHP przez niezalogowany
0 głosów
0 odpowiedzi 99 wizyt
0 głosów
0 odpowiedzi 309 wizyt
pytanie zadane 30 kwietnia 2021 w PHP przez misiek.sz Bywalec (2,050 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...