Я использую Slim v2 для своих API и думаю об обновлении до версии v3. К сожалению, у меня ограниченный опыт и вы можете использовать свою помощь на примере кода ниже.Slim v2 to Slim v3 Обновление
Это код Логин:
$app->post('/register', function() use ($app) {
// check for required params
verifyRequiredParams(array('name', 'email', 'password'));
$response = array();
// reading post params
$name = $app->request->post('name');
$email = $app->request->post('email');
$password = $app->request->post('password');
// validating email address
validateEmail($email);
$db = new DbHandler();
$res = $db->createUser($name, $email, $password);
if ($res == USER_CREATED_SUCCESSFULLY) {
$response["error"] = false;
$response["message"] = "You are successfully registered";
} else if ($res == USER_CREATE_FAILED) {
$response["error"] = true;
$response["message"] = "Oops! An error occurred while registereing";
} else if ($res == USER_ALREADY_EXISTED) {
$response["error"] = true;
$response["message"] = "Sorry, this email already existed";
}
// echo json response
echoRespnse(201, $response);
});
Вот функция validateEmail:
function validateEmail($email) {
$app = \Slim\Slim::getInstance();
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$response["error"] = true;
$response["message"] = 'Email address is not valid';
echoRespnse(400, $response);
$app->stop();
}
}
Как получить экземпляр приложения в тонкий v3 на самом деле остановить приложение, когда критерии ввода не выполняются? Буду признателен, если вы могли бы привести мне пример с помощью моего кода.
Спасибо за помощь!
РЕДАКТИРОВАТЬ
выше проблема была решена. К сожалению, новая проблема возникла после проверки моего кода.
У меня есть средний слой для аутентификации пользователя:
function authenticate(\Slim\Route $route) {
// Getting request headers
$headers = apache_request_headers();
$response = array();
$app = \Slim\Slim::getInstance();
// Verifying Authorization Header
if (isset($headers['Authorization'])) {
//omitted code
} else {
// api key is missing in header
$response["error"] = true;
$response["message"] = "Api key is misssing";
echoRespnse(400, $response);
$app->stop();
}
В моем основном коде я реализовать функцию аутентификации следующим образом:
$app->get('/tasks', 'authenticate', function() {
global $user_id;
$response = array();
$db = new DbHandler();
//ommit some code
echoRespnse(200, $response);
});
ли вы знаете, как сделать это в тонком v3? Буду признателен за вашу помощь.
Благодарим вас за ответ. Это хороший обход проблемы, с которой я столкнулся. Очень ценится. К сожалению, возник новый вопрос. Я отредактировал вышеупомянутый вопрос, потому что этот вопрос был решен. – Stefan
В slim3 вы можете использовать промежуточное программное обеспечение. Pls взглянуть на следующую ссылку. http://www.slimframework.com/docs/concepts/middleware.html – wtadahiro
И вы можете получить заголовок из объекта $ request. '$ Request-> getHeaders(); ' – wtadahiro