【问题标题】:Do I have to add an after filter to change all response content-type to json?我是否必须添加一个后过滤器才能将所有响应内容类型更改为 json?
【发布时间】:2016-04-09 02:46:32
【问题描述】:

我正在使用 laravel 4.2,我最近发现我的所有 JSON API 请求都没有得到 'content-type' : 'application/json' 。

所以...

这是开箱即用的还是我应该自己添加过滤器?

我的选项要么将我的代码中所有 json 响应更改为 Response::json()

最简单的解决方案是添加一个 after 过滤器来检查响应是否为 json 并更改标头

json_decode($response->getContent());
if ( json_last_error() == JSON_ERROR_NONE ) {
    $response->headers->set('Content-Type','application/json');
}

这似乎为每个请求增加了一些额外的开销。有没有更好的办法?

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    Laravel 已经拥有你所需要的。

    Response::json($your_data)

    docs了解更多信息

    Laravel 会检查您的数据是否实现了 JsonableInterfaceArrayObject 或者只是 array 并将其转换为 json 并设置标题。

    【讨论】:

    • 这要求我更改我现在所有的 API 响应 User::find($id)->toJson() 例如。另外,我需要始终遵循这个约定,有一天当我迁移到 laravel 时,我需要更改它,因为 laravel 5 不再有响应。
    • Laravel 5 有响应,就像外观和助手一样。您可以省略 response::json 并返回数组 laravel 会自动转换它
    猜你喜欢
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多