如何从外部 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