【发布时间】:2015-02-03 21:11:52
【问题描述】:
我正在尝试在 Laravel 中创建一个 API,以将游戏与后端应用程序集成。 游戏需要发布用户名和密码,我将使用此 API 为该会话创建一个令牌。 我会尝试 Route::post、Route::any,但是当我使用 SoapUI 或 REST 控制台(chrome 插件)使用方法 POST 发送请求时,Input::get('any') 什么也不返回。 当我使用 GET 方法发送请求时,它可以工作。 我在网上没有找到解决方案。
routes.php
Route::group(array('prefix' => 'api'), function() {
Route::any('/gamelogin', 'ApiController@login');
Route::group(array('prefix' => 'v1', 'before' => 'apitoken'), function() {
Route::get('/milestone', array('uses' => 'ApiController@milestone'));
});
});
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);
}
}
}
【问题讨论】:
-
我没有看到您的代码有任何问题,并且 Route::any() 或 Route::post() 应该捕获任何 POST 请求。也许您可能会尝试从您的应用程序中捕获 Laravel 之外的 POST 请求,看看它是否通过这种方式。
-
检查
Input::all()正在返回请求输入 -Input::get('any')实际上是在寻找一个名为any的请求参数。