首页 文章

将Laravel与现有API一起使用

提问于
浏览
0

目前,我的Laravel应用程序主要运行自定义API,使用Guzzle直接在控制器中使用 . 通过Eloquent处理的站点的唯一部分是用户管理/身份验证 . (控制器扩展了一个父控制器,它在各个函数中具有通用的GET / PUT / POST调用,子控制器调用这些函数并向它们发送数据)

我正在寻找有关如何抽象API的GET / PUT / PUSH调用的信息,并将它们从控制器中取出,以便数据访问在整个电路板上更加统一 . 不幸的是,我没有看到关于API的大量信息,而没有在Laravel应用程序中实际创建它们 .

似乎我应该能够编写一些内容,以便控制器以与它们与用户数据交互的方式类似的方式与API进行交互,但同样,我没有找到有关它的信息(我可能无法正确搜索) .

有人能指出我正确的方向吗?我正在使用Laravel 4.1 .

2 回答

  • 1

    听起来你正在使用Guzzle来连接到第三方API,并且你想要在控制器中实例化Guzzle并调用Guzzle方法 .

    一种解决方案是编写一个处理API调用的库类 . 例如

    class MyAPILibrary
    {
        public function readImportantData($parameters)
        {
            // use Guzzle to connect to the API, pass the parameters, and read
            // the important data
            return $importantData;
        }
    }
    

    然后,在您的控制器中,只要您需要该数据:

    public function getIndex()
    {
        // I need that important data!
        $d = MyAPILibrary::readImportantData($myParameters);
    
        // and use the data...
        return View::make("template")->with("important", $d);
    }
    

    请注意,我假设您为库设置了服务提供程序和外观,因此您可以进行类似 MyAPILibrary::readImportantData($myParameters) 的方法调用 . 有关该教程的详细教程,请参阅this page .

    这个设置的好处是你现在可以测试你的API库,而不需要触摸你的控制器 . 再加上您的控制器变得更轻 - 通常是一两行 . 例如,上面的示例可以重写:

    public function getIndex()
    {
        return View::make("template")
            ->with("important", MyAPILibrary::readImportantData($myParameters));
    }
    

    瞧!一线控制器方法!

  • 3

    看看我的包裹

    https://github.com/joshhornby/Http

    应该帮助:)

相关问题