2014-12-05 86 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。