使用 curl - JSON 访问 Laravel Rest API
Posted
技术标签:
【中文标题】使用 curl - JSON 访问 Laravel Rest API【英文标题】:Accessing Laravel Rest API with curl - JSON 【发布时间】:2015-06-01 20:50:59 【问题描述】:我正在尝试让我的客户使用我的 API,但我遇到了一些麻烦,我是 cURL 的新手,所以也许你可以帮助我。
我的 API 控制器(laravel.project/api/v1/users/id
public function show($user)
if ($user == null)
return $this->setStatusCode(404)->respondNotFound('User not found');
return $this->respond($user);
这是我通过 POSTMAN 发出简单请求得到的答案
"data":
"id": 4,
"name": "Helena",
"email": "hh@gmail.com",
"created_at": "2015-03-26 21:13:16",
"updated_at": "2015-03-26 21:13:16"
Response Headers:
Cache-Control → no-cache
Connection → keep-alive
Content-Type → application/json
Date → Sat, 28 Mar 2015 15:44:45 GMT
Server → nginx/1.6.2
Transfer-Encoding → chunked
到目前为止一切都很好,但是当我以这种方式在客户端中使用 cURL 时:
public function delete($url, $token)
$final_url = $this->base_url . $url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $final_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $token, 'Content-Type: application/json'));
$result = curl_exec($ch);
curl_close($ch);
return $result;
我得到的响应不是 json:
"
"data":
"id":4,
"name":"Helena",
"email":"hh@gmail.com",
"created_at":"2015-03-26 21:13:16",
"updated_at":"2015-03-26 21:13:16"
"
它看起来像一个 json 响应,但请注意乞求时的引号,最后,我无法使用 json_encode 或 json_decode 解析它。
我已经为此苦苦挣扎了一段时间,任何意见都值得赞赏。
只是为了确保您理解我的问题,代码运行良好,但是当使用 curl 发出请求时,它不使用内容类型标头
编辑1:
#165
+"data": #167
+"id": 4
+"name": "Helena"
+"email": "hh@gmail.com"
+"created_at": "2015-03-26 21:13:16"
+"updated_at": "2015-03-26 21:13:16"
【问题讨论】:
在第一种情况下,您将返回一个由 Laravel 自动序列化为 JSON 的数组。在第二种情况下,您将现有的 JSON 作为字符串返回,Laravel 将其视为字符串并按原样返回。你可以做的只是在$result
上运行 json_decode
来解析 JSON,然后返回解析后的数组,然后 Laravel 会像第一种情况一样处理它。
响应现在在 EDIT 1 中。
【参考方案1】:
试试return $result
,而不是:
return response()->json(json_decode($result));
【讨论】:
以上是关于使用 curl - JSON 访问 Laravel Rest API的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Wordpress JSON REST API 给出奇怪的 Curl 错误