json - Laravel 在正文中发送 JSON 标头
问题描述
我有以下类为我处理 JSON 响应:
<?php
namespace BulkTransactionalSMS\Http\Handlers\Response;
use Symfony\Component\HttpFoundation\Response;
class JsonResponseHandler implements ResponseHandlerInterface
{
/**
* @param string $message
* @return Response
*/
public function errorResponse(string $message): Response
{
return response()->json([
'status' => 'error',
'message' => $message
]);
}
/**
* @param array $successDetails
* @return Response
*/
public function successResponse(array $successDetails = []): Response
{
$response = array_merge(['status' => 'success'], $successDetails);
return response()->json($response);
}
}
所有 JSON 响应都由此类处理,因为它是统一的且易于更改。我已经尝试过这个类,就像它一样,Response::json()
并且两者都产生相同的结果。
JSON 标头被发回,这与 jQuery 处理响应有关。这是一个示例调用,我将返回:
// Example call
$jsonResponseHandler = new JsonResponseHandler();
return $jsonResponseHandler->errorResponse('This is not working');
// Returns this:
HTTP/1.0 200 OK
Cache-Control: no-cache, private
Content-Type: application/json
Date: Tue, 12 Mar 2019 06:15:28 GMT
{"status":"error","message":"This is not working"}
// Expected return:
{"status":"error","message":"This is not working"}
调用的路由(通过 Ajax)设置如下:
Route::post('/upload-file', 'UploadController@uploadFile');
这就是目标函数的样子:
/**
* @param Request $request
* @return Response
*/
public function uploadFile(Request $request)
{
$fileHandler = new FileUploadHandler(
new MessagesRepository(new Message()),
new JsonResponseHandler(),
new Hasher()
);
return $fileHandler->uploadFile($request);
}
为什么它会返回正文中的标题,我该如何解决?
编辑 1
解决方案
当我浏览我为 FatBoyXPC 上传的文件时,我看到我对该函数的类型转换是string
. 这就是为什么它坏了。这是我修复它的方法:
public function uploadFile(Request $request): string
{
// do stuff
}
它应该是:
public function uploadFile(Request $request): \Symfony\Component\HttpFoundation\Response
{
// do stuff
}
推荐阅读
- php - 在 TCPDF html 表中获取二维条码
- python - 加载“太大”数据或没有足够资源(CPU 或内存)时,python 的行为是什么?
- excel - 如果函数与公式计算日期之间的差异
- linux - bash 警告:由文件结尾分隔(需要“EOL”)
- c - UEFI 函数 GetVariable() 返回 EFI_NOT_FOUND
- shell - 每个唯一标识符的 awk 标准差
- c# - 如何通过 PUT 方法更新 ICollection 的属性?
- python - 将数据存储在 .txt 文件中并检索它
- c# - 在自定义 JsonConverter 中使用来自 json 的另一个属性
- r - 通过 R/exams 在 Canvas 中随机排列练习