私はAPI用にSlim v2を使用しており、v3へのアップグレードを考えています。 残念ながら私は経験が限られており、以下のコード例であなたの助けを借りることができます。Slim v2から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ではアプリのインスタンスを取得します入力条件が満たされていない場合のアプリですか? 私のコードの助けを借りて私に例を与えることができたら、私はそれを感謝します。
ありがとうございました!
EDIT
上記の問題を解決しました。残念ながら、私のコードをチェックした後に新しい問題が発生しました。
私は、ユーザーを認証するための中間層を持っている:
私のメインのコードで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