如何在Laravel中处理来自外部服务器的传入POST数据

时间:2017-09-04 23:45:33

标签: php laravel api post sendgrid

我有一个处理laravel中的传入POST数据的路由:

Route::get('/sendgrid/api', 'SendGrid\EmailEventsController@parse');

这是我的控制器:

namespace App\Http\Controllers\SendGrid;

use App\Http\Controllers\Controller;
use App\Models\SendGrid\EmailEvents;

class EmailEventsController extends Controller
{
    public function parse()
    {
        $contents = file_get_contents("php://input");
        $requests = json_decode($contents);

        $data = array();

        foreach ($requests as $request)
        {
            array_push($data, array(
                'email' => $request->email,
                'event' => $request->event,
                'category' => $request->category
            ));
        }

        EmailEvents::insert($data);
    }
}

但仍然无效。我做错了什么?

2 个答案:

答案 0 :(得分:3)

首先,您可以更改您的路线

Route::any('/sendgrid/api', 'SendGrid\EmailEventsController@parse');

然后,您必须忽略中间件中未使用的csrf> VerifyCsrfToken

并添加您的代码

protected $except = [
     '/sendgrid/api',
];

您可以使用和更改

$contents = file_get_contents("php://input");

$contents = $request->getContent();

我希望此代码可以帮助您解决问题。感谢

答案 1 :(得分:0)

就像你说的那样,它是一个POST请求,然后使用POST

接收它
Route::post('/sendgrid/api', 'SendGrid\EmailEventsController@parse');