cct-marketing / rest
创建 CCT 微服务的 API SDK 的基础库
v2.0.0
2023-10-05 13:14 UTC
Requires
- php: ~7.1 | ~8.0
- cct-marketing/collections: ~1.0
- guzzlehttp/guzzle: ~6.5|~7.0
- symfony/http-foundation: ~4.4|~5.0|~6.0
- symfony/yaml: ~4.4|~5.0|~6.0
Requires (Dev)
- jms/serializer: ^2.3|^3.28
- phpunit/phpunit: ^9.0
- symfony/property-access: ~4.0|~5.0|~6.0
- symfony/serializer: ^4.0|~5.0|~6.0
This package is auto-updated.
Last update: 2024-09-05 15:23:46 UTC
README
A REST(表现层状态转移) 库,帮助快速开发 RESTful 网络服务 SDK。支持将响应和请求数据序列化为对象。
安装
composer require cct-marketing/rest
序列化库(可选)
如果没有安装序列化库,所有响应将作为数组返回
推荐 JMS 序列化器
composer require jms/serializer
替代 Symfony 序列化器
composer require symfony/serializer composer require symfony/property-access
用法
要使用此库,您只需扩展 AbstractClient 和 AbstractSerializerRequest 或 AbstractRequest 类
use CCT\Component\Rest\Config; use CCT\Component\Rest\Http\Definition\RequestHeaders; use CCT\Component\Rest\Http\Request; use CCT\Component\Rest\Serializer\Context\Context; class MyRequest extends Request { protected function setUp() { $this->config->set(Config::URI_PREFIX, '/test/'); } public function apiCall(QueryParams $queryParams = null) { $this->config->set('serialization_context', Context::create()->setGroups(['read'])); $headers = RequestHeaders::create( [ 'Accept' => 'application/json', 'X-Requested-With' => 'XMLHttpRequest', ] ); $this->setHeaders($headers); return parent::requestGet($this->getUri(), $queryParams); } }
use CCT\Component\Rest\AbstractClient; use CCT\Component\Rest\Config; class RESTClient extends AbstractClient { /** * @return ScrapeRequest */ public function myAPI(): MyRequest { $config = clone $this->config; $modelClass = TestModel::class; $serializer = $this->getBuiltSerializer($config); if ($this->shouldUseDefaultResponseTransformers() && null !== $serializer) { $this->applyDefaultResponseTransformers($config, $serializer, $modelClass); } return $this->createRequestInstance(TestRequest::class, $config, null); } }
运行
$config = new \CCT\Component\Rest\Config([ \CCT\Component\Rest\Config::ENDPOINT => 'https://api.endpoint.com/', \CCT\Component\Rest\Config::DEBUG => true, ]); /** * Send Request */ $client = new Client($config); $query = new QueryParams(); $query->set('message', 'hello'); $response = $client->myAPI()->apiCall($query); var_dump($response->getData());