小径运输

2021-06-24 22:16:36

在任何PHP框架中发送API请求一直是一点点手动过程,是的,您可以创建一个SDK或包装器 - 但您仍然必须做同样的事情。

您在HTTP客户端或Facade中拉动,您将其配置为进入要发送请求的URI的运算方式,然后标记在可选的附件,如身份验证,有效载荷,任何其他标题。这是一个非常手动过程。

很多时候您都有要发送的特定请求,是的,你可以在通过进入标识符等时略微调整东西 - 但通常它们保持相对常量。

这让我感到沮丧了一段时间,我们必须很长的长度来制造我们面向的很多代码对象。然而,我们尝试用API请求完成此操作。我一直坐在这个问题上很长一段时间,思考可能的解决方案 - 它可能看起来如何,以及如何使用它。

这是我最新的Laravel包装:我描述为:

Transporter是在PHP中发送API请求的未来派方式。这是处理API请求的OOP方法。

要开始,您需要做的就是安装它,没有配置无需添加到您的项目中没有任何额外的东西 - 它只在您想要使用它时使用。

我们在这里所做的就是过滤完成的托多列表 - 没有什么意思是困难的。

首先让我们看一下我们通常如何做到这一点(但是假装我们假装此API要求我们使用先前生成的API令牌进行身份验证)。

不可思议的权利?我的意思是,它有效,并做你可能期望的。但是,这是非常成绩。如果URL更改会发生什么?如果查询参数更改,会发生什么?我们必须通过我们的代码库追捕,并在任何地方更新这些。你知道,我们正在努力避免更多和更多的东西我们构建的一切。

让' s为这些请求添加了一点魔法,并了解我们如何使用Laravel运输车发送完全相同的请求:

它' s。整个东西凝聚在课程中。让'看看我们如何到达那里。

<?phpdeclare(strict_types = 1);命名空间app \ transporter;使用illuminate \ http \ client \ pendingrequest;使用juststeveking \ transporter \ prodect; class todorequest扩展请求{protected string $ method =' get'受保护的字符串$ baseurl =' https://jsonplaceholder.typicode.com' ;;受保护的字符串$ path =' / todos&#39 ;;受保护的数组$ DATA = ['已完成' =>真的, ];受保护的函数有查询(PendingRequest $请求):void {$ equest-> outtoken(config(' jsonplaceholder.api.token')); }}

返回原来的问题,如果选择改变 - 我们必须在我们的应用程序中捕获我们可能已经使用过的地方。通过将此移动到基于类的请求来解决该问题。此外,由于请求本身只是一个围绕Laravels Inbuilt PendingRequest的花哨的包装器 - 我们可以在发送之前和之后调用所有相同的方法。意思是没有新的API学习,所以它相对直截了当。您也可以在运行时覆盖选项 - 想要显示未完成的户户曲?

这可能不是一个接地破碎的包,即将改变世界,但是要做的就是让你开始询问问题:我可以以更具结构化和有组织的方式发送API请求吗?

想象一下,您需要使用第三方API所需的方案。您可以很快生成一系列请求,并将完成!让&#39借用Laravel Forge的示例,如果你记得我在此之前写过关于我在这里发布的PHP-SDK的那篇文章。

< phpdeclare(strict_types = 1);命名空间app \ transporter \ forge;使用illuminate \ http \ client \ pendingrequest;使用juststeveking \ transporter \ lequest;类忘记扩展请求{受保护的字符串$ baseurl =' https:/ /forge.laravel.com/api/v1' ;;受保护的函数有查询(pendingrequest $请求):void {$ locue-> outtoken(config(' services.forge.token')); }}

下一个Let'借用所有服务器的示例。为此请求生成新请求:

<?phpdeclare(strict_types = 1);命名空间app \ transporter \ forge \ server;使用app \ transporter \ forge \ forgerequest;使用illuminate \ http \ client \ pendingrequest; class listservers扩展谅解{protected string $方法=&#39 ; Get&#39 ;;受保护的字符串$ path =' /服务器&#39 ;;}

我们在这里所做的就是使用继承来扩展遗忘,该遗传包含我们需要的每个请求的初始状态 - 并允许我们建立在我们想要的地方。

感谢您的阅读,我欢迎任何可能有助于推动此包装的反馈,并使更容易使用!随意开始讨论或打开GitHub存储库的问题,甚至在Twitter上丢弃我的推文/ DM。