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

question-closed Rest Api - przekazywanie i odbieranie posta - problem

Object Storage Arubacloud
0 głosów
251 wizyt
pytanie zadane 18 stycznia 2019 w PHP przez niezalogowany
zamknięte 18 stycznia 2019

hej, pisze bardzo prosty skrypt, w którym wykorzystuje rest api w celach praktycznych.

Mam problem z odbieraniem posta.

Wysyłam go w ten sposób:

curl -i -X POST -H "Content-Type: application/json" -d '{"name":"nazwa posta"}' http://localhost:85/posts

Odbieram i obrabiam go  tak:

        $post = $this->f3->get('POST');
        $name = $post['name'];


        $year = 2015;
        $category = 3;

        $this->db->exec("insert into posts(name, year, category) values('$name', $year, $category)");

Wpis do bazy się oczywiscie dodaje, jednakże pole "name" nie przybiera żadnej wartosci i wyglada tak

{"id":"11","name":"","year":"2015","category":"3"}

 

 

komentarz zamknięcia: głupi błąd - komentarze
komentarz 18 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Podejrzyj co zawiera $post czy też $name, może z jakiegoś powodu tej wartości tam nie ma (nie znam tego frameworka, nie wiem np. co zwraca ->get() i czy parsuje JSONa od razu do tablicy).
komentarz 18 stycznia 2019 przez niezalogowany
możesz mi podpowiedzieć jak to podejrzeć? bo tego nie moge zrobić, w jaki sposób podejrzeć zawartość "posta", który jest wysylany curl'em na metode post
komentarz 18 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
W PHP zrobić var_dump, echo czy cokolwiek tego typu, a curl sam powinien w konsoli wyświetli odpowiedź jaką otrzyma.

BTW nie wygodniej byłoby Ci skorzystać z jakiegoś klienta do robienia takich requestów? Postman chyba najpopularniejszy, mi się zdarza również korzystać z wbudowanego w PhpStorma jeśli może z niego korzystasz.
komentarz 18 stycznia 2019 przez niezalogowany

tak korzystam z phpstorma ale aktualnie to nie jest moje priorytetowe zmartwienie, że tak powiem

okazało sie ze tablica, którą odbieram jest pusta :O

$post = $this->f3->get('POST');
var_dump($post);

output:
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Fri, 18 Jan 2019 12:39:30 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: Fat-Free Framework
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:00 +0000

array(0) {
}

 

 

komentarz 18 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Rozumiem że to nie jest Twoje zmartwienie, ale jeśli będziesz tak testował i gdzieś źle wysyłał requesta bo go ręcznie klepiesz, to możesz po stronie PHP problemu szukać w nieskończoność :) Wydaje mi się co prawda że samo wysłanie jest dobre, ale dawno z czystego curla nie korzystałem.

Musisz poczytać jak ten framework obsługuje JSON w requestach, jak to odebrać, bo zapewne inaczej niż standardowy POST z form-data.
komentarz 18 stycznia 2019 przez niezalogowany

oki, juz wszystko wiem, moja wina, źle odczytywałem dane z FW

 

ale mam jeszcze pytanie apropo curl testera w phpstormie

otóż, robiąc to w konsoli otrzymałem odpowiedź:

object(stdClass)#6 (1) {
  ["name"]=>
  string(19) "nazwa filmu z posta"
}
, czyli wszystko jest okej, wartość już ląduje w bazie, natomiast phpstrom po wykonaniu zapytania curl wyrzuca mi w response

NULL
komentarz 18 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Najwyraźniej coś źle z niego wysyłasz, JSON nie dochodzi/dochodzi źle i dlatego pokazuje, że nie otrzymał tam nic - tak przypuszczam.
komentarz 18 stycznia 2019 przez niezalogowany
no wlasnie wyglada na to, że dochodzi bo się rekord do bazy dodaje normalnie
komentarz 18 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
To dziwne, aż bym powiedział że niemożliwe, skoro dodaje się rekord to te dane muszą być w skrypcie.
komentarz 18 stycznia 2019 przez niezalogowany
tak tylko że dodaje się pusty, bez danych

w request param mam

name=nazwa
komentarz 18 stycznia 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
A, no czyli tak niezbyt "normalnie" dodaje :P

Request param to nie będzie JSON, pewnie stąd problem.

Podobne pytania

0 głosów
3 odpowiedzi 1,212 wizyt
pytanie zadane 27 stycznia 2019 w PHP przez grabarz233 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 289 wizyt
pytanie zadane 24 czerwca 2020 w PHP przez xnerwo Gaduła (3,270 p.)
0 głosów
1 odpowiedź 699 wizyt
pytanie zadane 11 maja 2020 w PHP przez michal_php Stary wyjadacz (13,700 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!

...