【发布时间】:2017-02-17 11:57:23
【问题描述】:
我已经构建了一个 API 和一个使用该 API 的应用程序。一切正常,但现在,由于某种原因,我收到了 400 Bad Request 响应。我不确定我是否更改了代码中的某些内容,因此我想仔细检查它是否正确。
所以我的 API 调用是这样的
$client = new GuzzleHttp\Client();
$jsonData = json_encode($data);
$req = $client->request('POST', 'https://someurl.com/api/v1/createProject', [
'body' => $jsonData,
'headers' => [
'Content-Type' => 'application/json',
'Content-Length' => strlen($jsonData),
]
]);
$output = $req->getBody()->getContents();
API 有一个正确设置的使用 post 的路由。它调用的函数是正确的,我已经将它更改为测试以简单地返回
return response()->json(["Success", 200]);
当我在 Postman 中测试 API 时,我可以看到成功返回。当我在我构建的其他应用程序中测试 API 时,我什至在控制台中都没有看到 POST 请求,我只是显示了一个 Laravel 错误 400 Bad Request。
这个问题的原因可能是什么?
谢谢
更新
我已经把请求改成了这个
$data= json_encode($data);
$req = $client->post('https://someurl.com/api/v1/createProject', [
'body' => $data
]);
如果我在编码后输出$data,我会得到这样的结果
{
"projectName":"New Project",
"clientName":"Test Client",
}
在被调用的 API 的控制器函数中,我只是这样做
return response()->json(['name' => $request->input('clientName')]);
400 错误现在已经消失,但我现在返回 null
{#326 ▼
+"name": null
}
请求被注入到函数中。我应该以不同的方式返回数据吗?
谢谢
【问题讨论】:
-
你使用 git 还是其他 vcs?如果你这样做了,你可以看看你是否做了改变......
-
我没有对这部分代码进行任何更改,它曾经可以正常工作
-
据我所知,您所做的只是尝试使用第一个代码 sn-p (Guzzle) 访问返回(测试)“成功”的路线。
-
可能是应用程序发送了格式错误的 JSON。
-
尝试
$request->all()而不是$request->input('clientName')并反馈
标签: api laravel laravel-5.2