SIR

index.php [라우팅 메인 파일] > RESTful

RESTful

index.php [라우팅 메인 파일] 정보

index.php [라우팅 메인 파일]

본문

기본적인 틀을 잡고, 테스트 해본 파일입니다.

전체 소스는 문서 작업을 추가하여, 그누보드 플러그인에 추가할 예정입니다.

역시 그누보드 소스는 만만하지 않군요. 

 



<?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();


추천1

댓글 6개

테스트 주소는
https://api_demo.solgnu.com/api/test
https://api_demo.solgnu.com/api/test/12345
입니다.

아직 문서 작업을 안했는데, 진행되는대로 공유하겠습니다.
data 안의 응답 포맷이라도 님하고 같게 했으면 좋을 것 같습니다.  제가 빨리 Doc을 만들어야 되는데, 쓸데 없는 것을 하다 보니,  늦어지네요
안녕하세요. github에 올리신 gnubaord_api를 기존 그누보드5와 연동해보고 싶은데요.
설치방법을 잘 몰라서요.
그냥 api 폴더를 gnuboard5.4.4.6 폴더안에 넣고, 위 게시물을 참고해서 db나 테이블 연동을 하면 되나요?
설치하는 방법을 몰라서요. 문서나 정보가 있다면 링크 부탁드립니다.
감사합니다.
주말에 기본적으로 사용가능한(회원가입/로그인/게시판 조회 정도) 기능을 플러그인형태로 배포할 예정입니다. sir 그누보드 플러그인에서 다운받을수 있을거에요.
님 감사합니다. 한번 꼭 써보고 싶었는데... 주말에 글 올라오는거 기다리고 있어야 겠네요. 즐건 하루 되세요.
전체 43 |RSS
RESTful 내용 검색

회원로그인

(주)에스아이알소프트 (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT