POST form-data nebo raw JSON
- Damo
- Člen | 56
Rád bych přijímal v presenteru oba způsoby a dále s nimi pracoval a
pak vyčítal přes getPost.
Jak dostat raw Json do POST aby se s tím mohlo pracovat jako
s POST daty?
tedy poslane jako form-data
$request = $this->getHttpRequest();
$name = $request->getPost("name")
a poslané jako raw json
$request = $this->getHttpRequest();
$headers = $request->getHeaders();
if ($headers["content-type"] === "application/json") {
// zde naplnit post, aby další kód, který pracuje s getPost dostal data odeslane jako raw json
// setPost neexistuje, takže jen příklad
// $request->setPost = json_decode($request->getRawBody());
}
$name = $request->getPost("name")
- Marek Bartoš
- Nette Blogger | 1274
Předpokládat, že když není v body form-data, tak tam bude json je špatně. Ta data do POST prostě nepatří.
- dakur
- Člen | 493
@Damo Jak píše Marek, ta logika je chybná, je to ohýbání POST (resp. form-data) k uchovávání dat v aplikaci. Lepší je mít jinou strukturu, do které se to přelije ať už z JSON či z form-data a tu pak dále v aplikaci používat. Tedy:
- JSON endpoint → DTO → aplikace/model
- form-data endpoint → DTO → aplikace/model
Nemusí to být ani objekt, klidně jen array či cokoliv, záleží na tvém use-case. Stejně tak to nemusí být dva endpointy, ale jen jeden, to už je otázkou implementace.
Editoval dakur (27. 1. 2022 10:40)