2014-12-05 149 views
0

我試圖在Laravel中創建一個API來將遊戲與後端應用程序集成。 遊戲需要發佈用戶名和密碼,我將使用此API爲此會話創建一個令牌。 我會嘗試Route :: post,Route :: any,但是當我發送請求時,使用SoapUI或REST Console(chrome插件)的方法POST,Input :: get('any')不會返回任何內容。 當我用GET方法發送請求時,它可以工作。 我在網上找不到解決方案。無法檢索帖子值

routes.php文件

Route::group(array('prefix' => 'api'), function() { 
    Route::any('/gamelogin', '[email protected]');  
    Route::group(array('prefix' => 'v1', 'before' => 'apitoken'), function() { 
     Route::get('/milestone', array('uses' => '[email protected]')); 
    }); 
}); 

filters.php

Route::filter('apitoken', function() { 
    // check if apitoken is valid 
}); 

ApiController.php

class ApiController extends BaseController { 

    public function login() { 

     try { 

      $statusCode = 200; 


      $response = [ 
       'status' => [ 
           'code' => 1, 
           'message' => 'Usuário ou senha inválidos' 
          ] 
      ]; 

      $userdata = array(
       'login'  => Input::get('login'), 
       'password' => Input::get('password'),  
       'active' => '1'  
       ); 


      if (Auth::attempt($userdata)) { 

       // TODO: verificar licença    
       $response['status'] = null; 
       $response['token'] = md5('id'.date('YmdHis')); 
       $response['api'] = 'v1'; 
       $response['assets_url'] = 'games.xpto.com.br/'.Input::get('game').'/v1/'.'pt_br/'; 
       $response['assets_version'] = 1; 

      } 

     } catch (Exception $e) { 

      $statusCode = 400; 

     } finally { 

      return Response::json($response, $statusCode); 

     } 

    } 

} 
+0

我沒有看到你的代碼有任何問題,Route :: any()或Route :: post()應該捕獲任何POST請求。也許你可能會嘗試的只是從應用程序中獲取Laravel以外的POST請求,並查看它是否通過這種方式。 – 2014-12-05 21:53:02

+0

檢查Input :: all()是否返回請求輸入 - Input :: get('any')實際上是查找一個名爲'any'的請求參數。 – Dwight 2014-12-06 01:08:31

回答

0

我發現這個問題。 代碼是正確的,但我不知道我需要在測試工具(例如其餘控制檯)中配置名爲raw body的參數,並將參數值設置爲JSON。