如何从外部 API 获取 $_POST 数据 - LARAVEL

Posted

技术标签:

【中文标题】如何从外部 API 获取 $_POST 数据 - LARAVEL【英文标题】:How to get $_POST data from external API - LARAVEL 【发布时间】:2017-12-06 21:57:26 【问题描述】:

我正在使用 Laravel。(我是 Laravel 的新手)

我必须在我的网站和外部 api 之间建立连接(无需从我的网站发送请求)。

我想从 api 获取 POST 数据到路由。

我做了什么:

路由/web.php

/**
* routes test
*/
Route::any('/photo/test', [
    'uses'  =>  'TestController@show',
    'as'    =>  'test.show'
]);

控制器:

class TestController extends Controller

    /**
     *
     * @return string
     */
    public function show(Request $request)
    

        var_dump($_GET);
        var_dump($_POST);
        die(1);
    
 

我检查了从 api 端发送 POST 数据,但在 laravel 超全局数组中 $_POST 和 $_GET 是空的,正如我们在上面看到的(在 var_dump() 函数中)。

我还为 VerifyCsrfToken 添加了这些路由:

class VerifyCsrfToken extends BaseVerifier

    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        "photo/test"
    ];

但是添加到异常后,我仍然有空字符串的问题...

谁能帮忙?

【问题讨论】:

看看guzzle:github.com/guzzle/guzzle 外部 API 必须发送 POST HTTP 请求。 @tilz0R 我检查过 - 没问题。 @Christophvh 我阅读了有关它的文档。而且我找不到任何关于 - 等待指定路线的响应。只有关于在 url 上发送请求的内容......但我想等待来自外部 api 的请求。 在你的路由中放置一个 function() 而不是控制器并检查 $_POST 和 $_GET 。另一件事是检查你的 laravel 日志,看看是否记录了错误。 【参考方案1】:

不要在 Laravel 中使用 $_GET$_POST 而是使用请求对象:

public function show(Request $request)

    dump($request->input());

    die(1);

https://laravel.com/docs/5.4/requests#retrieving-input

希望这会有所帮助!

【讨论】:

谢谢我的朋友,但是在使用 $_POST superglobal 之前我已经尝试过了。我也尝试使用 $request->all() 方法,但它也是空的。很奇怪…… @Z.S 你是如何向路由发出 post 请求的? 我有一个帐户,可以选择从这些 api 向我的网站发送 POST 请求以进行测试。我正在这样做,在这些应用程序中可以选择提供获取请求的路线。所以我写了我的网站+路线('www.example.com/photo/test')。一切都好,因为如果我在控制器中使用 var_dump() 函数返回一些数据,api 可以得到它。但我不知道如何通过 $_POST 方法获取那些从 api 发送的数据。当我更改域时,在空项目上做同样的事情(与 laravel 不同,例如在 word press 上)我可以访问 POST 这行不通,我认为是因为外部表单没有 crsf 令牌。尝试:$request->getContent() 我发布 JSON 并且可以成功阅读您的示例!谢谢

以上是关于如何从外部 API 获取 $_POST 数据 - LARAVEL的主要内容,如果未能解决你的问题,请参考以下文章

如何以 PHP 形式从特定表 html $_POST[] 获取数据

获取 Azure Blob(图像)并 POST 到外部 API

如何从 POST json 中获取数据

允许从外部服务器 YII2 获取 POST 数据

php 你如何确保 $_POST 数据来自你的表单而不是外部影响?

使用来自网站 API 的 POST 请求获取 Json 数据 [重复]