• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在Laravel中使用GuzzleHttp调用第三方服务的API接口代码

    背景:用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

    ?php
    namespace App\Http\Services;
     
    class APIHelper
    {
     
     public function post($body,$apiStr)
     {
      $client = new \GuzzleHttp\Client(['base_uri' => 'http://192.168.31.XX:xxx/api/']);
      $res = $client->request('POST', $apiStr,
       ['json' => $body,
       'headers' => [
        'Content-type'=> 'application/json',
    //    'Cookie'=> 'XDEBUG_SESSION=PHPSTORM',
        "Accept"=>"application/json"]
      ]);
      $data = $res->getBody()->getContents();
     
      return $data;
     }
     
     public function get($apiStr,$header)
     {
      $client = new \GuzzleHttp\Client(['base_uri' => 'http://192.168.31.XX:xxx/api/']);
      $res = $client->request('GET', $apiStr,['headers' => $header]);
      $statusCode= $res->getStatusCode();
     
      $header= $res->getHeader('content-type');
     
      $data = $res->getBody();
     
      return $data;
     }
    }
     

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

    'Cookie'=> 'XDEBUG_SESSION=PHPSTORM',

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

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

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

    2、具体在Controller中使用

    public function index(Request $request)
     {
      $data = $request->json()->all();
      $body = $data;
      $apiStr = '/api/xxx/list';
      $api = new APIHelper();
      $res =$api->post($body,$apiStr);
      $data = json_decode($res);
      $ret=new RetObject();
      $ret->retCode='0000';
      $ret->retMsg='Success';
      $ret->data=$data;
      return response()->json($ret);
     }

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

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

    您可能感兴趣的文章:
    • Laravel如何实现适合Api的异常处理响应格式
    • Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
    • laravel接管Dingo-api和默认的错误处理方式
    • Laravel实现ApiToken认证请求
    • laravel框架 api自定义全局异常处理方法
    • laravel dingo API返回自定义错误信息的实例
    • laravel 配置路由 api和web定义的路由的区别详解
    • Laravel5.4简单实现app接口Api Token认证方法
    • 详解Laravel制作API接口
    上一篇:解决在laravel中auth建立时候遇到的问题
    下一篇:在PHP中实现使用Guzzle执行POST和GET请求
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    在Laravel中使用GuzzleHttp调用第三方服务的API接口代码 在,Laravel,中,使用,GuzzleHttp,