我正在使用 PHP 和 Symfony 5 開發 API。
在認證方法中,我需要回傳一個 JWT Token,以及帶有 code 的 headers 201 Created,所以我使用了這個代碼:
// RETURN MESSAGE
$body = [
'auth_token' => $jwt,
];
$json = new JsonResponse($body);
$json->setStatusCode(201, "Created");
return new Response($json);
凡$jwt以前生成。
有了這個,我希望得到一個帶有201 Created代碼的標頭和一個帶有 JWT 令牌的主體,但我得到的(使用 Postman)是這樣的:

如您所見,所有內容都在正文中,標題真實代碼是200 Ok. 我錯過了什么嗎?
uj5u.com熱心網友回復:
您應該回傳JsonResponse.
但是您出于某種原因將 包裝JsonResponse在另一個Response物件上。
做就是了:
$body = [
'auth_token' => $jwt,
];
$json = new JsonResponse($body);
$json->setStatusCode(201, "Created");
return $json;
我假設您正在打電話setStatusCode()是因為您想為回應標頭設定某種型別的自定義文本。但是如果你設定的是默認的“Created”,你可以在實體化JsonResponse物件時簡單地設定狀態碼:
return new JsonResponse($payload, Response::HTTP_CREATED);
一個JsonResponse物件已經擴展了Response,它只是一種創建帶有application/jsonContent-Type 標頭的回應的簡便方法,并自動編碼為 JSON 任何您想要回傳的有效負載。
uj5u.com熱心網友回復:
與@yivi 答案相同,但您可以直接在建構式上設定狀態代碼
$body = [
'auth_token' => $jwt,
];
return new JsonResponse($body, Response::HTTP_CREATED);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329485.html
