index.php [라우팅 메인 파일]
기본적인 틀을 잡고, 테스트 해본 파일입니다.
전체 소스는 문서 작업을 추가하여, 그누보드 플러그인에 추가할 예정입니다.
역시 그누보드 소스는 만만하지 않군요.
[code]
<?php
include_once __DIR__."/autoload.php";
include("_common.php");
//use SimpleDB;
//use Router;
include_once __DIR__."/Router.php";
$pdo_db = new PDO("mysql:host=".G5_MYSQL_HOST.";dbname=".G5_MYSQL_DB, G5_MYSQL_USER, G5_MYSQL_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"));
$pdo_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo_db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
if(defined('G5_MYSQL_SET_MODE') && G5_MYSQL_SET_MODE) {
$pdo_db->exec("SET SESSION sql_mode = ''");
}
if (defined('G5_TIMEZONE')) {
$pdo_db->exec(" set time_zone = '".G5_TIMEZONE."'");
}
$db = new SimpleDB($pdo_db);
$router_config = [];
$router_config['pdo_db'] = $pdo_db;
$router_config['db'] = $db;
$router_config['ROOT_PATH'] = G5_PATH;
$router_config['g5_config'] = $config; //기존 그누보드 글로벌 설정값
$router_config['is_login'] = $_SESSION['ss_mb_id'] ? true : false; //사용자 로그인 여부
$router_config['login_mb_id'] = $_SESSION['ss_mb_id']; //사용자 로그인 아이디
ini_set('display_errors', 1);
$router = new Router($router_config);
$router->setBasePath("/api");
// Custom 404 Handler
$router->set404(function () use ($router) {
return $router->withJson(['message' => '404 Not Found'], 404);
});
$router->get("/hello", function() {
echo "hello";
});
$router->mount('/test', function () use ($router, $db) {
$controller = new HelloController($router);
$router->get('/', function () {
echo json_encode([
'message' =>'OK',
'data' => 'test'
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
});
$router->get('/(\d+)', function ($id) use ($router, $controller) {
$data = $controller->test3($id);
return $router->withJson(['message' => 'OK', 'status' => 200, 'data' => $data], 200);
});
$router->get('/([a-zA-Z]+)', function ($id) use ($router, $controller) {
$data = $controller->test4($id);
return $router->withJson(['message' => 'OK', 'status' => 200, 'data' => $data], 200);
});
});
$router->mount('/member', function () use ($router, $db) {
$controller = new MemberController($router);
$router->post('/login', function () use ($controller) {
$mb_id = filter_input(INPUT_POST, 'mb_id', FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => '/[A-Za-z0-9_\-]+/')));
$mb_password = filter_input(INPUT_POST, 'mb_password');
return $controller->login($mb_id, $mb_password);
});
$router->post('/logout', function () use ($controller) {
return $controller->logout();
});
});
$router->run();
[/code]
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 6개
https://api_demo.solgnu.com/api/test
https://api_demo.solgnu.com/api/test/12345
입니다.
아직 문서 작업을 안했는데, 진행되는대로 공유하겠습니다.
설치방법을 잘 몰라서요.
그냥 api 폴더를 gnuboard5.4.4.6 폴더안에 넣고, 위 게시물을 참고해서 db나 테이블 연동을 하면 되나요?
설치하는 방법을 몰라서요. 문서나 정보가 있다면 링크 부탁드립니다.
감사합니다.