【问题标题】:Laravel 5 - Deal with controller validation and RESTful clients like PostmanLaravel 5 - 处理控制器验证和 RESTful 客户端,如 Postman
【发布时间】:2015-08-13 23:11:50
【问题描述】:

我正在使用 laravel 的 RESTful 资源路由和控制器。
我用 PostMan 和/或 RestClient(firefox) 测试我的 api

在我添加 laravel 的控制器验证之前一切都很好。现在它会响应非常奇怪的响应,例如:status code 0,甚至执行带有无效数据的代码。甚至显示从数据库中获取的奇怪结果(根本不包含在控制器中)。

这太可怕了。

例如:

public function store(Request $request) {
    $this->validate($request, [
        'room_id' => 'required|integer',
        'body' => 'required'
    ]);

    exit; // Stop the process after the validation...

    // ... Logic to STORE the MESSAGE in the database ...
    return response(null, 204);
}

此存储功能必须验证数据并在验证失败时以错误响应,
但是当我从 PostMan 执行它时,它返回带有列表的响应属于该用户的所有房间。这令人毛骨悚然,我不明白为什么会这样。

当我使用具有相同请求选项的 jQuery.ajax() 方法时,它工作正常。它验证数据并将消息存储在数据库中。

问题:有没有办法对付邮递员?
问题:邮递员危险吗?由于服务器响应数据库信息(不包括在控制器响应中)。

【问题讨论】:

    标签: laravel-5 response validation postman


    【解决方案1】:

    当验证失败时,Laravel 需要知道你正在发送 ajax 请求或者你明确希望 json 响应,否则它会将你重定向到上一页。

    你可以在这里查看我的答案 https://stackoverflow.com/a/38478362/6246592

    【讨论】:

      【解决方案2】:

      如果您仔细查看 laravel 的验证文档,它说当通过 HTML 表单提交数据时,验证方法会将您重定向到上一个页面,如果验证失败,错误将闪现到会话中。不过,您将能够使用 $error 变量在视图中访问这些错误消息。因此,您需要通过 ajax 提交数据才能获得 JSON 错误消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        • 2021-08-01
        • 2010-11-21
        • 2020-04-09
        • 2012-03-03
        相关资源
        最近更新 更多