【问题标题】:Laravel - redirect request to external url and return its response as responseLaravel - 将请求重定向到外部 url 并将其响应作为响应返回
【发布时间】:2019-12-02 11:01:18
【问题描述】:

我正在使用 Laravel 构建一个应用程序,为 Android 应用程序提供一些 API,并且我正在使用来自另一台服务器的一些外部 API(使用另一个 URL)。我想为来自 android 端的外部 API 请求创建代理或隧道之类的东西,但在我自己的 URL 中。

例如: android 想要请求 externalUrl.com/api/objects 但我希望他请求这个 myDOmain.com/api/x/objects 并获得与第一个链接返回,没有任何变化。 并且有不止一个外部 API,我不想为每一个编写单独的代码。

需要这样的东西:

Route::any('/x/{somewhere}', function($request){
return [$request, externalUrl.com/api/{somewhere}]->response;
})

我不是要求 http 请求库!我想将请求重定向到另一个域并返回它的请求。

【问题讨论】:

  • 你研究过 cURL 吗?
  • @LLJ97 我应该如何使用它来达到这个目的?
  • 您可以使用 cURL(“纯”php 实现或像 Guzzle 这样的库)向外部 url 发出请求,获取响应并将其作为您自己的 api 的响应发送。这是你要求的还是我走错了路?

标签: php laravel api


【解决方案1】:

你可以使用 Guzzle:

use Guzzle\Http\Client;
use Guzzle\Stream\PhpStreamRequestFactory;
[...]
$request = new Client("externalUrl.com/api/{$somewhere}");

$response = $request->send();
return $response->getBody();

【讨论】:

    【解决方案2】:

    最好的选择是安装 Guzzle。 https://github.com/guzzle/guzzle

    使用起来真的很简单。

    $client = new \GuzzleHttp\Client();
    $response = $client->request('GET', 'externalUrl.com/api/{somewhere}');
    
    return $response->getBody();
    

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2015-04-22
      • 1970-01-01
      • 2014-12-11
      • 1970-01-01
      相关资源
      最近更新 更多