经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
来源:jb51  时间:2019/10/16 11:41:12  对本文有异议

背景:用laravel进行分布式开发,自己写了一个业务系统,还写了一个用户中心和其他的信息中心

现在需要做到前端只需要访问业务系统的API接口也可以获取到其他服务上面的数据

找了很多资料,最后查到了Laravel自带的GuzzleHttp可以达到我的需求

Guzzle中文文档:

http://guzzle-cn.readthedocs.io/zh_CN/latest/index.html

引入安装

在composer.json文件的“require”项中加入

"guzzlehttp/guzzle": "^6.3",

然后命令行执行composer install

在项目中的具体用法:

1、在项目某个地方,我选择的是在app/Http/Services目录下面新建一个APIHelper

  1. <?php
  2. namespace App\Http\Services;
  3. class APIHelper
  4. {
  5. public function post($body,$apiStr)
  6. {
  7. $client = new \GuzzleHttp\Client(['base_uri' => 'http://192.168.31.XX:xxx/api/']);
  8. $res = $client->request('POST', $apiStr,
  9. ['json' => $body,
  10. 'headers' => [
  11. 'Content-type'=> 'application/json',
  12. // 'Cookie'=> 'XDEBUG_SESSION=PHPSTORM',
  13. "Accept"=>"application/json"]
  14. ]);
  15. $data = $res->getBody()->getContents();
  16. return $data;
  17. }
  18. public function get($apiStr,$header)
  19. {
  20. $client = new \GuzzleHttp\Client(['base_uri' => 'http://192.168.31.XX:xxx/api/']);
  21. $res = $client->request('GET', $apiStr,['headers' => $header]);
  22. $statusCode= $res->getStatusCode();
  23. $header= $res->getHeader('content-type');
  24. $data = $res->getBody();
  25. return $data;
  26. }
  27. }

在项目中主要我用的是post方法,

  1. 'Cookie'=> 'XDEBUG_SESSION=PHPSTORM',

这一行加进去之后可以使用XDebug进行调试,但是在真正用起来的时候不需要在header里面加这一行了

如果是调用https接口,如果有证书问题,则加入这两项'verify' => '/full/path/to/cert.pem','verify' => false,不验证证书。

  1. public static function post_user($body,$apiStr)
  2. {
  3. $client = new \GuzzleHttp\Client(['verify' => '/full/path/to/cert.pem','base_uri' => 'http://xxx.xxx.com/api/']);
  4. $res = $client->request('POST', $apiStr,
  5. ['verify' => false,
  6. 'json' => $body,
  7. 'headers' => [
  8. 'Content-type'=> 'application/json']
  9. ]);
  10. $data = $res->getBody()->getContents();
  11. $response=json_decode($data);
  12. return $response;
  13. }

2、具体在Controller中使用

  1. public function index(Request $request)
  2. {
  3. $data = $request->json()->all();
  4. $body = $data;
  5. $apiStr = '/api/xxx/list';
  6. $api = new APIHelper();
  7. $res =$api->post($body,$apiStr);
  8. $data = json_decode($res);
  9. $ret=new RetObject();
  10. $ret->retCode='0000';
  11. $ret->retMsg='Success';
  12. $ret->data=$data;
  13. return response()->json($ret);
  14. }

这样就可以在一个系统里用GuzzleHttp调用第三方的API接口了

以上这篇在Laravel中使用GuzzleHttp调用第三方服务的API接口代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号