Request GET změnit na POST – FULL API
- d3tr1tus
- Člen | 52
Ahoj používám Ublaboo ApiRoute a mám vytvořenou routu
$router[] = new ApiRoute('/api/add-user', "Front:Homepage", ["methods" => ["POST" => "addUser", "OPTIONS"]]);
když je methoda nastavená jako GET vše v pořádku proběhne. Já bych potřeboval nastavit požadavek ale na POST a tam už to vrací chybu
Nette\Application\BadRequestException #404
No route for HTTP request.
Používám kombinaci React + Nette. Když se podívám do Chromu tak metoda je stále nastavená jako GET i když jsem routu definoval jako POST.
Nevíte někdo co s tím? Našel jsem nějaké rady, ale žádné úpravy nepomohli.
Předem děkuji za pomoc :)
- David Matějka
- Moderator | 6445
Když se podívám do Chromu tak metoda je stále nastavená jako GET i když jsem routu definoval jako POST.
tohle nechapu, kam se divas do chrome?
jak posilas pozadavek na to API?
- d3tr1tus
- Člen | 52
David Matějka napsal(a):
Když se podívám do Chromu tak metoda je stále nastavená jako GET i když jsem routu definoval jako POST.
tohle nechapu, kam se divas do chrome?
jak posilas pozadavek na to API?
myslím tím když zkontroluju Network → Headers tak tam je
Request URL: http://localhost.nejaka-url.cz/api/add-user
Request Method: GET "nebo" OPTIONS
Status Code: 500 Internal Server Error
Remote Address: 127.0.0.1:80
ale já potřebuji aby tam bylo
Request Method: POST
požadavek posílám z Reactu pomocí Axiosu takhle
axios.post("/add-user", {
name: name
}, true).then((response) => {
console.log(response);
dispatch({type: "LOADER_DONE", payload: response.data});
}).catch((err) => {
console.log(err.message);
dispatch({type: "LOADER_DONE"});
_this.props.history.push("/500");
})
vždycky mi to skončí 500 Internal server error
- Ondřej Kubíček
- Člen | 494
to ti ale přece nepomůže… to že ty nastavíš routu jak POST, znamená že přijme jen požadavky, které dorazily přes POST
ale ty v reactu musíš poslat request na server metodou POST, ted jí posíláš GETem, to nemá s nette nic společného
Editoval Ondřej Kubíček (18. 9. 2018 18:29)
- David Matějka
- Moderator | 6445
pokud ti to axios.post skonci 500, tak mas chybu v aplikaci, koukni se do logu
- d3tr1tus
- Člen | 52
Tak pro ty kdo řeší stejnou chybu tak problém byl na backendu. Poradili mi na Slacku Pehapkari. On axios posílá 2 dotazy první je právě OPTIONS request a stačí nastavit do startup
if ($this->getHttpRequest()->getMethod() == 'OPTIONS') {
$this->getHttpResponse()->addHeader('Access-Control-Allow-Headers', 'X-Requested-With, X-Parent-Location');
$this->terminate();
}
pak už se odešle správně POST request a vše funguje jak má :)