2017-09-04 3 views
1

eingehende POST-Daten zu verarbeiten habe ich einen Weg für in Laravel eingehende POST Datenverarbeitung:Wie von einem externen Server in Laravel

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

Hier ist mein Controller:

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

aber immer noch nicht funktioniert . Was habe ich falsch gemacht?

+1

'Route mit :: get()', dass vielleicht? – Scuzzy

+0

Verwenden Sie ':: post' und fügen Sie Ihre URL' csrf' hinzu. –

+0

Das hilft nicht. Funktioniert immer noch nicht. – saintsweeto

Antwort

0

Erstens können Sie Ihre Route dieser sieht aus wie

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

ändern Und dann, Sie nicht verwendet csrf in Middleware ignorieren muss> VerifyCsrfToken

und fügen Sie Ihren Code wie dieser

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

Und Sie können

$contents = file_get_contents("php://input"); 
verwenden und ändern

zu

$contents = $request->getContent(); 

ich hoffe, dass dieser Code Ihrer Probleme helfen kann. Dank

0

Wie Sie gesagt haben, es ist eine Anforderung POST, dann erhalten sie POST

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