Files
nl-jqrl-api/app/BaseApp/BaseClient.php
2025-12-01 10:56:30 +08:00

113 lines
2.8 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\BaseApp;
use Exception;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Exception\RequestException;
class BaseClient extends BaseService
{
protected $client;
protected string $baseUrl = '';
protected array $headers = [];
public function __construct()
{
$this->isAuth = false;
parent::__construct();
}
/**
* 初始化请求类
* @return $this
* @throws Exception
*/
protected function init(): static
{
if (empty($this->baseUrl)) {
$this->utils->errorThrow('请设置baseUrl');
}
$this->client = new Client([
'timeout' => 60.0,
'connect_timeout' => 10.0,
'base_uri' => $this->baseUrl,
'verify' => false, // 禁用SSL证书验证不推荐用于生产环境
]);
return $this;
}
/**
* GET 请求
* @param $uri
* @param array $options
* @return array
* @throws Exception
*/
public function get($uri, array $options = []): array
{
return $this->init()->request('GET', $uri, [ 'query' => $options, 'headers' => $this->headers ]);
}
/**
* POST 请求
* @param $uri
* @param array $options
* @return array
* @throws Exception
*/
public function post($uri, array $options = []): array
{
return $this->init()->request('POST', $uri, [ 'form_params' => $options, 'headers' => $this->headers ]);
}
/**
* POST 请求
* @param $uri
* @param array $options
* @return array
* @throws Exception
*/
public function postJson($uri, array $options = []): array
{
// ds([ 'json' => $options, 'headers' => $this->headers, 'url' => $this->baseUrl. $uri ]);
return $this->init()->request('POST', $uri, [ 'json' => $options, 'headers' => $this->headers ]);
}
/**
* 请求
* @param $method
* @param $uri
* @param array $options
* @return array
*/
private function request($method, $uri, array $options): array
{
try {
$response = $this->client->request($method, $uri, $options);
return [
'status_code' => $response->getStatusCode(),
'body' => json_decode((string)$response->getBody(), true),
];
} catch (RequestException $e) {
return [
'status_code' => $e->getCode(),
'error_message' => $e->getMessage(),
'type' => 'RequestException',
'body' => []
];
} catch (GuzzleException $e) {
return [
'status_code' => $e->getCode(),
'error_message' => $e->getMessage(),
'type' => 'GuzzleException',
'body' => []
];
}
}
}