Гудл пост выдает ошибку 500, get работает нормально

Я пытаюсь создать API с ключом и секретом API, используя laravel и жрет. Я строю и API и клиент, используя Laravel.

У меня проблема, когда я пытаюсь получить доступ к простому контроллеру, чтобы получить JSON со списком пользователей из базы данных. Он работает нормально, когда я не использую аутентификацию, он терпит неудачу, когда я делаю, потому что мне нужно перейти на использование метода post, чтобы API получил секрет и app_id:

GuzzleHttp \ Exception \ ServerException (500)

Server error response [url] http://myapi.api/api/v1/users [status code] 500 [reason phrase] Internal Server Error

На моем клиенте:

$_app_id = 'APP001';
$_app_key = '28e336ac6c9423d946ba02d19c6a2632';
$_api_url = 'http://myapi.api/api/v1/users';
$enc_request = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $_app_key, json_encode($request_params), MCRYPT_MODE_ECB));
$params = array();
$params['enc_request'] = $enc_request;
$params['app_id'] = $_app_id;

$client = new GuzzleHttp\Client();
$result = $client->post($_api_url, array(
'body' =>  $params
));
$res=$result->json();
var_dump($res);

На моем API:

Route::group(array('prefix' => 'api/v1'), function(){
Route::resource('users', 'UsersController');
});
Route::filter('my.filter', function()
{
$applications = array(
'APP001' => '28e336ac6c9423d946ba02d19c6a2632', //randomly generated app key
);
try {

$enc_request = $_REQUEST['enc_request'];
$app_id = $_REQUEST['app_id'];

if( !isset($applications[$app_id]) ) {
throw new Exception('Application does not exist!');
}

$params = json_decode(trim(mcrypt_decrypt( MCRYPT_RIJNDAEL_256, $applications[$app_id], base64_decode($enc_request), MCRYPT_MODE_ECB )));

if( $params == false ){
throw new Exception('Request is not valid');
$result['success'] = false;
}else{
$result['success'] = true;
}

} catch( Exception $e ) {
$result = array();
$result['success'] = false;
$result['errormsg'] = $e->getMessage();
}

if($result['success']==false){
return Response::make('Unauthorized', 401);
//I have tested and the APP never gets inside here, authentication is correct
}
});

Мой контроллер:

class UsersController extends BaseController {
public function index()
{
$users = User::orderBy('username', 'asc');

return Response::json(array(
'error' => false,
'users' => $users->get()->toArray()),
200
);
}
}

Если я удаляю фильтр и просто меняю сообщение, чтобы попасть на мой клиент, я вижу json, который приходит от моего контроллера пользователя. Как только я перехожу на сообщение, я снова получаю сообщение об ошибке.

2

Решение

Ресурс Route использует метод store для публикации в том же URI, что и метод index. Как указано в Вот и прокрутите вниз до части «Действия, выполняемые контроллером ресурсов».

0

Другие решения

Я закончил тем, что изменил тело на запрос, и он работал нормально, как и был, и мог одновременно использовать классы ресурсов и жрет.

0

По вопросам рекламы [email protected]