Saloon 2 发布
发布于 作者 Paul Redmond
适用于 PHP 的 Saloon 包发布了 2.0 版本,从头开始重建,具有更快的并发性、重试、与 HTTP 客户端无关的设计、单次请求等等
📣 发布日! 🎉
— Sam Carré 🤠 (@carre_sam) 2023年2月20日
隆重推出 Saloon v2.0 🎉🤠 构建 Saloon 一直是一段奇妙的旅程。第二个版本充满了您一定会喜欢的功能和改进。从今天开始构建精美的 API 集成和 SDK 🔥
尽情享受 ❤️ https://t.co/Vo4V7kCfmr pic.twitter.com/aldCuhA16u
- 命名空间更改(例如,
SaloonRequest -> Request
) - 将 Guzzle 与 Saloon V2 包解耦
- 改进的开发者体验
- 以连接器为先的设计
- 新的中间件管道
- 请求并发和池化
- 更好的接口采用
- 改进与请求、标题、查询参数和配置的交互
- 改进的多部分请求
- 改进的 Laravel 支持
- 改进的异常处理
- 单次请求
- 新的分页助手
- 还有更多
单次请求非常适合您可能只向 API 发出一个请求的 API。通常,您需要定义一个连接器来发出请求。使用单次请求,您定义一个扩展 SoloRequest
的类,并调用 send()
来使用它!
class GetPokemonRequest extends SoloRequest{ protected Method $method = Method::GET; public function resolveEndpoint() { return 'https://pokeapi.co/api/v2/pokemon'; }} // No Connector Needed! $request = new GetPokemonRequest;$response = $request->send();
分页是另一个新功能,它使您能够轻松地遍历数百页,而无需编写任何样板代码
$connector = new SpotifyConnector; // Create a paginator and pass in a request class, in this example// we'll pass in the LikedSongsRequest which will retrieve all// the liked songs of the authenticated user. $paginator = $connector->paginate(new LikedSongsRequest); // Create a Laravel LazyCollection from the paginator and iterate// over each of the results. Traditionally, the liked songs endpoint// only lets you get 50 tracks per request, but the paginator will// automatically grab every page of results and pass it into a// single collection! 🔥 $collection = $paginator->collect('items')->map(function ($track) { return sprintf('%s - %s', $track['artist'], $track['name']);}); // Convert the LazyCollection into an array. $data = $collection->all();
要查看 V2 中的所有新增内容,请查看官方文档中的 V2 中的新增功能。恭喜 Sam Carré 以及所有为 Saloon V2 工作的贡献者!