【问题标题】:Need Help About Laravel Api需要关于 Laravel Api 的帮助
【发布时间】:2017-08-05 10:27:28
【问题描述】:

我有两个在不同领域工作的网络应用程序,第一个是这样的 Laravel 网络应用程序

domaine1.com 

以及另一个同样使用 laravel 构建的 Web 应用程序

domaine2.com

我在第一个应用程序上有一个像这样的仪表板 (domaine1.com/dashboard), 我想从这个仪表板中添加例如 A 书籍到 web 应用程序 2 ,它有它自己的数据库和表...... 请有人告诉我我该怎么做? 我是 laravel 的新手,我想我应该使用类似 API 的东西?还是别的什么?

【问题讨论】:

    标签: php laravel api laravel-5.3 laravel-5.4


    【解决方案1】:

    在您的 Application 2 routes.php 中创建一个路由以获取书籍 例如

    Route::get('domaine2.com/books', 'BookController@getBooks');
    

    在您的 BookController 中:

     public function getBooks()
        {
            $books = Books::all();    //I assume that Books is your model
            return $books
        }
    

    现在您所要做的就是在 domaine1.com 应用程序的控制器中的一个函数中调用它来获取您的书籍

    $books = file_get_contents('http://domaine2.com/books');
    

    首先尝试一下并确保它有效,请尝试访问 http://domaine2.com/books 以查看您的图书是否包含 json。

    【讨论】:

    • Helo 谢谢你的回复,但在这种情况下,任何人都可以从我的网站获取内容,我不希望这样,我只希望 domain1 接收数据
    • 你可以使用 laravel-cors。试试这个:en.vedovelli.com.br/2015/web-development/… 记住这是你输入你的网址的地方->header('Access-Control-Allow-Origin', 'domain1')
    【解决方案2】:

    是的。您应该使用 API。虽然不会那么容易,因为你要创建跨域请求。

    如果您要传递的数据没有分类,您可以制作一个公共 API 处理程序,这意味着每个人都可以访问它。例如,这可以是从数据库中返回一些对象的 get 请求。假设您在 domain1.com 中创建了一个路由:

    GET domain1.com/api/books 返回json/data

    然后,如果有人访问http://domain1.com/api/books,他将看到此响应格式为 json。您可以使用 CURL 在您的 domain2.com 应用程序中使用它,或者使用 axios 内置 vue.js。

    如果您要提供的数据是分类的,或者您要发出除 GET 以外的请求(例如 POST),则必须阅读有关应用程序授权的信息。简而言之:您必须向您的domain1.com 应用程序显示允许想要访问受限数据的人这样做。

    顺便提一下其他回复:您应该在路由中使用api.php,而不是web.php。请记住,file_get_contents 比 CURL 慢得多。

    【讨论】:

    • Helo 谢谢您的回复,我知道我应该使用 API,但我不希望 evryone 访问这个 API,因为它有一个敏感信息,我想要只有 domain1 可以访问数据?
    猜你喜欢
    • 2014-03-11
    • 2014-09-25
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多