JSON 中的 setStatusCode() 在 body 中返回 headers
setStatusCode() in a JSON is returning headers inside the body
我正在使用 PHP 和 Symfony 5 开发 API。
在身份验证方法中,我需要return一个JWT Token,并且header的代码是201 Created
,所以我使用了这个代码:
// RETURN MESSAGE
$body = [
'auth_token' => $jwt,
];
$json = new JsonResponse($body);
$json->setStatusCode(201, "Created");
return new Response($json);
其中 $jwt
是之前生成的。
有了这个,我期望得到一个 header 和 201 Created
代码,以及一个 body 和 JWT 令牌,但我得到的(使用 Postman)是这个:
如您所见,所有内容都在 body 中,而 header 实际代码是 200 Ok
。我错过了什么吗?
您应该 return正在 JsonResponse
。
但出于某种原因,您将 JsonResponse
包裹在另一个 Response
object.
上
就这样:
$body = [
'auth_token' => $jwt,
];
$json = new JsonResponse($body);
$json->setStatusCode(201, "Created");
return $json;
我假设您打电话给 setStatusCode()
是因为您想将某种类型的自定义文本设置为响应 header。但是如果你设置默认的“已创建”,你可以在实例化 JsonResponse
object:
时简单地设置状态码
return new JsonResponse($payload, Response::HTTP_CREATED);
A JsonResponse
object 已经扩展了 Response
,它只是一种使用 application/json
Content-Type headers 创建响应的简单方法,并自动编码为 JSON 您想要 return.
的任何有效载荷
同@yivi answer 但你可以直接在构造函数上设置状态码
$body = [
'auth_token' => $jwt,
];
return new JsonResponse($body, Response::HTTP_CREATED);
我正在使用 PHP 和 Symfony 5 开发 API。
在身份验证方法中,我需要return一个JWT Token,并且header的代码是201 Created
,所以我使用了这个代码:
// RETURN MESSAGE
$body = [
'auth_token' => $jwt,
];
$json = new JsonResponse($body);
$json->setStatusCode(201, "Created");
return new Response($json);
其中 $jwt
是之前生成的。
有了这个,我期望得到一个 header 和 201 Created
代码,以及一个 body 和 JWT 令牌,但我得到的(使用 Postman)是这个:
如您所见,所有内容都在 body 中,而 header 实际代码是 200 Ok
。我错过了什么吗?
您应该 return正在 JsonResponse
。
但出于某种原因,您将 JsonResponse
包裹在另一个 Response
object.
就这样:
$body = [
'auth_token' => $jwt,
];
$json = new JsonResponse($body);
$json->setStatusCode(201, "Created");
return $json;
我假设您打电话给 setStatusCode()
是因为您想将某种类型的自定义文本设置为响应 header。但是如果你设置默认的“已创建”,你可以在实例化 JsonResponse
object:
return new JsonResponse($payload, Response::HTTP_CREATED);
A JsonResponse
object 已经扩展了 Response
,它只是一种使用 application/json
Content-Type headers 创建响应的简单方法,并自动编码为 JSON 您想要 return.
同@yivi answer 但你可以直接在构造函数上设置状态码
$body = [
'auth_token' => $jwt,
];
return new JsonResponse($body, Response::HTTP_CREATED);