tebru / retrofit-php
Retrofit for PHP - 一个类型安全的PHP REST客户端。
v3.3.1
2020-04-02 20:14 UTC
Requires
- php: >= 7.1
- guzzlehttp/psr7: ^1.0
- nikic/php-parser: ~3.0.6|^4.0
- symfony/cache: ^3.3|^4.0|^5.0
- symfony/console: ^3.0|^4.0|^5.0
- tebru/doctrine-annotation-reader: ^0.3.0
- tebru/php-type: ^0.1.1
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^7.3
Suggests
- guzzlehttp/guzzle: Required to make requests
- dev-master
- v3.3.1
- v3.3.0
- v3.2.1
- v3.2.0
- v3.1.0
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v3.0.0-rc2
- v3.0.0-rc1
- v2.x-dev
- v2.9.0
- v2.8.3
- v2.8.2
- v2.8.1
- v2.8.0
- v2.8.0-rc4
- v2.8.0-rc3
- v2.8.0-rc2
- v2.8.0-rc1
- v2.7.0
- v2.6.1
- v2.6.0
- v2.5.5
- v2.5.4
- v2.5.3
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.0
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.0
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-simpler-requests
This package is auto-updated.
Last update: 2024-08-29 03:10:41 UTC
README
Retrofit是一个类型安全的REST客户端。它明显是从square/retrofit中抄袭而来,并在PHP中实现。
❗升级通知❗
版本3引入了许多破坏性更改。在升级之前,请查阅升级指南。
概述
以下内容适用于版本3,请查看对应标签以获取版本2的文档
Retrofit允许您使用简单的接口定义REST API。以下示例将尝试显示一个典型的用例,但需要两个额外的库。第一个使用Guzzle来发送HTTP请求,因为Retrofit没有提供任何默认的网络请求方式。第二个使用序列化器(Gson)来连接到Retrofit的Converter功能。这允许对请求体和响应体进行自动序列化和反序列化。
interface GitHubService { /** * @GET("/users/{user}/list") * @Path("user") * @ResponseBody("App\GithubService\ListRepo") * @ErrorBody("App\GitHubService\ApiError") */ public function listRepos(string $user): Call; }
使用注解来配置端点。然后,Retrofit
类生成服务接口的工作实现。
$retrofit = Retrofit::builder() ->setBaseUrl('https://api.github.com') ->setHttpClient(new Guzzle6HttpClient(new Client())) // requires a separate library ->addConverterFactory(new GsonConverterFactory(Gson::builder()->build())) // requies a separate library ->build(); $gitHubService = $retrofit->create(GitHubService::class);
我们新创建的服务能够向/users/{user}/list发送GET请求,它返回一个Call
对象。
$call = $gitHubService->listRepos('octocat');
然后使用Call
对象同步或异步地执行请求,返回响应。
$response = $call->execute(); // or $call->enqueue( function(Response $response) { }, // response callback (optional) function(Throwable $throwable) { } // error callback (optional) ); $call->wait();
然后您可以检查请求是否成功,并获取反序列化的响应体。
if (!$response->isSuccessful()) { throw new ApiException($response->errorBody()); } $responseBody = $response->body();
使用示例来自Square的文档
安装与使用
Retrofit 3需要PHP 7.1
composer require tebru/retrofit-php
请确保您还安装了一个HTTP客户端。
composer require tebru/retrofit-php-http-guzzle6
安装一个转换器来处理更高级的请求和响应体转换。
composer require tebru/retrofit-php-converter-gson
文档
许可
本项目采用MIT许可。请参阅LICENSE
文件以获取更多信息。