• 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

VPS Starter Arubacloud
0 głosów
239 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,550 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,550 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,550 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,550 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,550 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,550 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,180 wizyt
pytanie zadane 27 stycznia 2019 w PHP przez grabarz233 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 24 czerwca 2020 w PHP przez xnerwo Gaduła (3,270 p.)
0 głosów
1 odpowiedź 691 wizyt
pytanie zadane 11 maja 2020 w PHP przez michal_php Stary wyjadacz (13,700 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...