我有一个处理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);
}
}
但仍然无效。我做错了什么?
答案 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');