【问题标题】:Laravel API not accepting JSON request from PostmanLaravel API 不接受来自 Postman 的 JSON 请求
【发布时间】:2020-12-21 16:23:12
【问题描述】:

Laravel API 不接受 JSON 请求。如果我以表单数据的形式请求它可以工作,但如果我在邮递员正文中发布 JSON 对象,那么它不会收到请求数据。

路线:

$router->group(['prefix' => 'imp'], function () use ($router) {
    $router->group(['prefix' => 'lead'], function () use ($router) {
        $router->post('/jardy', 'FeedController@jardy');
    });
});

控制器:

 public function jardy(Request $request)
    {

        $this->validate($request, [
            'api_key' => 'required',
        ]);
        $api_key = $request->input('api_key');
        return $api_key;
}

JSON请求:

表单数据请求:

为什么在JSONcontent-typeapplication/jsonAccept:*/* 的情况下它不起作用???

【问题讨论】:

  • $request->validate([ 'api_key' => 'required' ]) 工作吗?
  • 是的,它可以工作,当我使用表单数据时它可以工作。就像$this->validate($request, [ 'api_key' => 'required', ]);。你已经 nissed $request
  • 你可以试试->validate($request->all()而不是->validate($request
  • ``` 验证 ``` 方法需要 Request 对象。当我按照您的建议进行修改时,它会显示错误。 @Dilip Hirapara
  • 注意我在$request 上使用validate 方法,而不是在$this

标签: laravel api laravel-5 eloquent postman


【解决方案1】:

你必须添加标题

接受:应用程序/json

然后 laravel 将您的 RAW json 解析为输入变量,并且可以使用 ->input()

访问它们

见:

使用邮递员默认的 / 将不起作用.. 如果你不想转发标题,你也可以做$request->json(),但我想,你只是想传递标题。

查看处理此问题的源代码: https://github.com/laravel/framework/blob/7.x/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php#L52

https://github.com/laravel/framework/blob/7.x/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php#L32

【讨论】:

  • 你是对的,我在 Postman 中做错了什么,现在我从一个 Angular 应用程序中访问 API,它工作得非常好。
  • 当然 Content-Type 也应该是 application/json,正如您在原始帖子中建议的那样。 / 您可以在浏览器中检查请求,以查看您的 Angular 应用正在发送哪些标头..
  • 您是否禁用了默认 *\/* ?,我很确定它只需要 Accept 和 Content-Type 标头,默认情况下...还需要 laravel 输出 json 错误而不是 html
  • 我添加了2个指向源的链接,正在处理这个......
  • 谢谢@Danny,isJson() 返回true,但从 Postman 调用时错误仍然相同。
【解决方案2】:

JSON 中不允许评论。 字段 Body -> raw -> json

中有一个错误

【讨论】:

    猜你喜欢
    • 2021-04-08
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多