#php #slim
#php #slim
Вопрос:
Я пытаюсь вызвать API с помощью postman из проекта, который я загрузил онлайн (общий хостинг cpanel), но продолжал получать эту ошибку:
{
"statusCode": 500,
"error": {
"type": "SERVER_ERROR",
"description": "Class 'App\Db\Database' not found"
}
}
Вот мой контроллер, пытающийся протестировать API входа в систему, когда я делаю запрос:
namespace AppControllers;
use AppDbDatabase;
use FirebaseJWTJWT;
use RespectValidationExceptionsNestedValidationException;
use SlimPsr7Response;
use RespectValidationValidator as v;
class LoginController
{
public function __construct($data, Response $response)
{
$validator = v::keySet(
v::key('username', v::stringType()->notEmpty()->setName('username')->length(2, 100)),
v::key('password', v::stringType()->notEmpty()->setName('password'))
);
try {
$validator->assert($data);
} catch (NestedValidationException $e) {
$response->getBody()->write(json_encode([
'responseCode' => "13",
'responseMessage' => $e->getMessages(),
]));
return $response->withHeader('Content-Type', 'application/json');
}
$username = $data['username'];
$password = $data['password'];
$hash_pwd = password_hash($password, PASSWORD_DEFAULT);
$db = Database::getInstance();
$login_query =
$db->select(
'users',
[
'email_address',
'passwords'
],
[
'email_address' => $username,
]
);
if (!$login_query) {
$response->getBody()->write(json_encode([
'responseCode' => '99',
'responseMessage' => "Invalid Login Details"
]));
} else {
$user_hash_pwd = $login_query[0]['passwords'];
$password_verify = password_verify($password, $user_hash_pwd);
if ($password_verify) {
$key = "!@#$%^amp;*()_ ";
$payload = array(
"iss" => "http://localhost",
"aud" => "http://localhost",
'iat' => time(),
'uid' => 1,
'exp' => time() 10,
);
$token = JWT::encode($payload, $key);
$decoded = JWT::decode($token, $key, array('HS256'));
$response->getBody()->write(json_encode([
'responseCode' => '0',
'responseMessage' => "Logged In",
'responseBody' => [
'token' => $token
]
]));
} else {
$response->getBody()->write(json_encode([
'responseCode' => '99',
'responseMessage' => "Incorrect password"
]));
}
}
}
}
Конечная точка — api / v1 / login. Хотя данные о подключении к базе данных верны, а также пространство имен. Пожалуйста, как я могу это исправить?
Комментарии:
1. Не знаком со Slim, но вы даже определили
AppDbDatabase
класс?2. Да, я сделал @Jeto
3. Тогда, пожалуйста, поделитесь его определением пространства имен и местоположением папки.
4. Определение пространства имен: пространство имен App Db; расположение: public_html / api / src / Model / Database (на cpanel)
5. Я предполагаю, что Slim использует автозагрузку PSR-4, что означает, что ваш класс должен быть в
.../src/App/Db
папке вместо этого.