klein
현재 web page 에 restful api 를 추가하려고 찾다가 보니, route library 로 klein 가 좋다고 해서 한 번 사용해 보려 한다.klein library 설치
composer(https://getcomposer.org/) 로 설치하는 것을 권하고 있다. 그래서 composer 로 설치했다.
c:\proj>composer require klein/klein
RewriteEngine on
mod_rewrite
httpd.conf 에서 mod_rewrite 를 사용하도록 지정하자.
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
그리고 httpd-vhosts.conf 에서모든 url 을 index.php 로 오도록 하자. 이것은 apache 에서 설정 해 주면 된다.
- [HOWTO] Rewrite all urls to one index.php in Apache · GitHub
- VirtualHost Examples - Apache HTTP Server Version 2.4
아래처럼 RewriteEngine 을 사용하면 된다.
<VirtualHost *:8081>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "c:/proj/src"
ServerName localhost
ServerAlias gnuboard.com
RewriteEngine On
RewriteRule "^/.*" "c:/proj/src/api.php"
ErrorLog "logs/gnuboard-error.log"
CustomLog "logs/gnuboard-access.log" common
<Directory "c:/a/programming/php/gnuboard/src">
#
# Possible values for the Options directive are
RewriteRule 을 아래처럼 설정하면 모든 URL 이 c:/proj/src/api.php 로 연결된다.
아래 처럼 해도 똑같다.RewriteRule "^/.*" "c:/proj/src/api.php"
RewriteRule "." "c:/proj/src/api.php"
RewriteRule 을 아래처럼 설정하면 모든 api 로 시작하는 URL 이 c:/proj/src/api.php 로 연결된다.
RewriteRule "^/api/.*" "c:/proj/src/api.php"
즉,
http://localhost:8080/api/hello-world를 입력하면
c:/proj/src/api.php가 호출될 것이다.
klein hello-world
위처럼 "^/api/.*" 를 설정했을 때 klein 에서도 url 은 "/api/hello-world" 처럼 해줘야 한다.<?php // klein - c:/proj/src/api/api.php require_once __DIR__ . '/../vendor/autoload.php'; $klein = new \Klein\Klein(); $klein->respond('GET', '/hello-world', function () { return 'Hello World!'; }); // not working $klein->respond('GET', '/api/hello-world', function () { return 'Hello World!'; }); $klein->dispatch(); ?>
댓글 없음:
댓글 쓰기