2016-05-04 11 views
0

Wenn ich versuche, Postman zu schreiben verwenden, bekomme ich diesen Fehler {"name":"Bad Request","message":"Invalid JSON data in request body: Syntax error.","code":0,"status":400,"type":"yii\\web\\BadRequestHttpException"}ungültige JSON-Daten in Anforderungstext: Syntaxfehler POST Anruf REST-API YII2

Mein Controller ist

`Klasse CountryController erweitert ActiveController { Öffentlichkeit $ modelClass = 'app \ models \ Land';

public function behaviors() 
{ 
    return [ 
     [ 
      'class' => 'yii\filters\ContentNegotiator', 
      'only' => ['index', 'view','create'], 
      'formats' => ['application/json' => Response::FORMAT_JSON,], 

     ], 
     'verbs' => [ 
      'class' => VerbFilter::className(), 
      'actions' => [ 
       'index'=>['get'], 
       'view'=>['get'], 
       'create'=>['post'], 
       'update'=>['put'], 
       'delete' => ['delete'], 
       'deleteall'=>['post'], 
      ], 

     ], 
    ]; 
} 

} `

hinzugefügt

'parsers' => [ 
       'application/json' => 'yii\web\JsonParser', 
      ] 

in api/config.php Datei.

Wo ich falsch liege ??

+0

Verwenden Sie PHP7? Ich habe festgestellt, dass mit PHP7, wenn Sie eine leere Stelle mit Inhalt/type = application/json in einen Fehler senden, aber es funktionierte perfekt auf früheren Versionen von PHP. – ventayol

+0

Nein Im mit PHP 5+ – Jackhad

Antwort

0

Versuchen Sie, diese

public function behaviors() 
{ 
    return [ 
     [ 
      'class' => 'yii\filters\ContentNegotiator', 
      'only' => ['index', 'view','create'], 
      'formats' => ['application/json' => Response::FORMAT_JSON] 

     ], 
     'verbs' => [ 
      'class' => VerbFilter::className(), 
      'actions' => [ 
       'index'=>['get'], 
       'view'=>['get'], 
       'create'=>['post'], 
       'update'=>['post'], 
       'delete' => ['delete'], 
       'deleteall'=>['post'], 
      ] 
     ] 
    ]; 
} 
+0

Ich finde keinen Unterschied in meinem Verhalten() und deins :) – Jackhad

-1

ich auf PHP 7 Wordpress 4.7 verwende, auch Probleme mit dem leeren Anfrage Körper.

Mein Controller:

add_action('rest_api_init', function() 
{ 
    register_rest_route('v0', '/accounts/(?P<slug>[a-z0-9_\-]+)/accounts', array(
     'methods' => 'GET', 
     'callback' => function($request) 
     { 
      try { 
       return 'hello'; 
      } 
      catch (Exception $e) { 
       $error = json_decode($e->getMessage(), true); 
       return new WP_Error($error['status_code'], $error['message'], ""); 
      } 
     } 
    )); 
}); 

Antwortfehler:

{"code":"rest_invalid_json","message":"Invalid JSON body passed.","data":{"status":400,"json_error_code":4,"json_error_message":"Syntax error"}} 

ich nicht eher eine Lösung gefunden hat als in WP Gießkernauswechselabschnitt: wp-includes/Rest-api/Klasse-wp-Rest -request.php und channing-Zeile 672 für die bedingte Prüfung auf leeren Körper oder nicht.

$params = json_decode($this->get_body(), true); 
Verwandte Themen