2017-09-04 4 views
1

J'ai un itinéraire pour le traitement des données POST entrant dans Laravel:Comment gérer les données POST entrants depuis un serveur externe Laravel

Route::get('/sendgrid/api', 'SendGrid\[email protected]'); 

Voici mon contrôleur:

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); 
    } 
} 

Mais ne fonctionne toujours pas . Qu'ai-je fait de mal?

+1

'Route :: get()' que peut-être? – Scuzzy

+0

utilisez ':: post' et ajoutez votre URL aux exceptions' csrf'. –

+0

Cela n'aide pas. Ne fonctionne toujours pas. – saintsweeto

Répondre

0

D'abord, vous pouvez modifier votre itinéraire ressemble à ceci

Route::any('/sendgrid/api', 'SendGrid\[email protected]'); 

Et puis, vous devez ignorer pour ne pas utiliser CSRF dans Middleware> VerifyCsrfToken

Et ajoutez votre code ressemble à ceci

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

Et vous pouvez utiliser et modifier

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

à

$contents = $request->getContent(); 

J'espère que ce code peut aider vos problèmes. merci

0

Comme vous l'avez dit, il est une requête POST, puis le recevoir à l'aide POST

Route::post('/sendgrid/api', 'SendGrid\[email protected]');