2016-05-04 23 views
0

私はポストマンを使用して投稿しようとすると、私はこのエラーを取得する{"name":"Bad Request","message":"Invalid JSON data in request body: Syntax error.","code":0,"status":400,"type":"yii\\web\\BadRequestHttpException"}無効なJSONデータ:構文エラーPOSTコール休憩API YII2

私のコントローラは

`クラスCountryControllerがActiveController { 公衆を拡張しています$ modelClass = 'app \ models \ Country';

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'], 
      ], 

     ], 
    ]; 
} 

} `

API/config.phpのファイル内

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

を加えました。

どこが間違っていますか?

+0

PHP7を使用していますか? PHP7では、content/type = application/jsonの空の本文にエラーを送信しても、以前のバージョンのPHPでは完全に動作していたことがわかりました。 – ventayol

+0

いいえ私はPHP 5+を使用しています – Jackhad

答えて

0

この

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

私の行動()とあなたの違いが見つかりません:) – Jackhad

-1

を試してみて、私はまた、空のリクエストボディの問題を取得し、PHP 7上のワードプレス4.7を使用しています。

マイコントローラー:

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'], ""); 
      } 
     } 
    )); 
}); 

レスポンスエラー:私はむしろWPコアに変更するよりも任意の解決策を見つけていなかった

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

:WP-含ま/残り-API /クラス-WP-休息-request.phpと空のボディの条件チェックのためのチャニングライン672。

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