【问题标题】:How to allow access to other site(s) to retrieve data from your site/database?如何允许访问其他站点以从您的站点/数据库中检索数据?
【发布时间】:2015-02-18 12:23:07
【问题描述】:

我有 2 个网站。让我们称之为:

  • A
  • B

网站B 有一个很好的数据列表及其所有关系。 我想允许网站A 访问网站B 并加载那些data

  • 当然,网站A 需要某种凭据、api_keys 或密码才能访问网站B。正确的 ?我从来没有这样做过。

  • 然后在凭证匹配后,网站B会将数据以json文件的形式返回给网站A

  • 然后,A 网站将接收到该 json 文件,并将其加载到 HTML 中并显示。

我希望我对自己的目标足够清楚。

这是我尝试过的:

在做了一些研究之后,我发现了这个site。我真的很喜欢它。我已经全部完成了。现在,我对 RESTful API 有了更多的了解。

现在,转到code


在我的filters.php我修改

Route::filter('auth.basic', function()
{
    return Auth::basic("username");
});

在我的routes.php

Route::get('/authtest', array('before' => 'auth.basic', function(){
    return return "It's work !";
}));

之后,我跑

注意

  • username = firstuser
  • password = first_password

C:\wamp\www\laravel-1
λcurl --user firstuser:first_password localhost/l4api/public/index.php/authtest

我明白了

It's work !


目前,它只返回一个字符串。

  • 如果我想以 json 格式返回整个 users 表,我该怎么做?

  • 到目前为止,我根本没有使用任何api_key 吗?这很糟糕吗?

    感谢所有参与此帖子的人thanks

【问题讨论】:

  • Laravael 在模型上提供了一个 toJSON() 方法。如果您正在构建 API,您将需要某种身份验证,除非您不介意将数据公开提供给任何人。
  • 您可以通过创建“站点 B”用户(通过 IP 地址限制它)并通过 HTTPS(从站点 B)连接到它来直接允许访问站点 A 的数据库......或者我是缺少什么?
  • @Joe 我需要身份验证,你是对的。事实上,现在,我通过用户名和密码对它们进行身份验证。够好吗?我应该使用api_key 吗?有什么主要的区别吗?如果,我决定使用api_key。我需要把它存放在某个地方,例如。数据库,对吧?或者因为我知道只有one 站点需要访问我的站点,我可以手动设置'api_key'=>'any-random-number'。任何进一步的建议或提示,我都喜欢接受。再次感谢 - 乔。
  • 这取决于您希望 API 有多“安静”。真正宁静的 API 是无状态的,因此不能使用 cookie。有几种方法可以进行无状态身份验证,但关键是不要在请求中发送任何秘密(例如密码)信息。这是一个很大的主题,并不适合这个问题的 cmets 部分。
  • @CD001 哇哦……我没想到。我想我可以为站点A 创建一个用户,就像我创建其他用户一样。通过 HTTPS 连接到它?我还不知道怎么做,我需要购买 SSL 证书吗?我现在想推迟。受IP地址限制,我喜欢这个主意,所以我必须在我的filters.php中的某个时候检查一下,对吧?你对我应该在哪里检查有什么建议吗?另外,您是否知道任何有关响应任何请求的 json 文件的信息。我对此很陌生。到目前为止,非常感谢你们的提示。 :)

标签: php json rest


【解决方案1】:

在你的routes.php 中你应该添加这样的东西。

Route::get('/api/distributors', array('before' => 'auth.basic', 'uses'=>'DistributorController@api_index'));

}));

Controller

<?php 

$user = $distributor->user()->first();

$Data = [


    'user' => $user->toArray(),
    'distributor' => $distributor->toArray(),
    'contacts' => $distributor->contacts()->get()->toArray(),
    'addresses' => $distributor->addresses()->get()->toArray()
];

$json_string = json_encode($Data, JSON_PRETTY_PRINT);

?>

逻辑

  • 查询您需要的任何内容
  • 将它们存储在数组索引中
  • 编码数据
  • 在发送之前让你的 json 漂亮

然后,其他站点将收到包含所有数据的1 json 文件。 然后他们需要先解码,他们可以将它们全部加载为HTML/PHP格式。

【讨论】:

    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 2021-04-01
    • 2014-04-16
    • 2012-07-16
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多