Router 가 필요합니다. > RESTful

RESTful

Router 가 필요합니다. 정보

Router 가 필요합니다.

본문

안녕하세요. 솔그누 입니다.

 

Restful API의 URL 은 다들 아시다시피 이렇게 생겼습니다.

 

POST https://your_domain/api/v1/member/join

POST https://your_domain/api/v1/member/login 

GET https://your_domain/api/v1/board/{bo_table}/{wr_id}

POST https://your_domain/api/v1/board/{bo_table}/write

PATCH https://your_domain/api/v1/board/{bo_table}/{wr_id}

 

자주보던 짧은글주소랑 비슷합니다. 맞습니다.

url을 직관적으로 표시하는 기능이 restful 이고, api는 데이타 전송을 위해 사용한다고 생각하시면 편합니다.

 

api에서 라우터를 구현하기 위해  두가지가 필요합니다.

 

1.  웹서버의 라우팅 기능

   - nginx : RewriteRule

   - apache : .htaccess

2. 소스 PHP 내부의 라우팅 기능

 

nodejs 의 경우는 자체가 웹서버임으로 코드 내부에서 라우팅이 가능합니다.(2번만 필요)

 

물론 PHP도 웹서버가 내장되어 있습니다.(BuiltIn Server) 이를 활용한다면 2번 있어도 됩니다.

그러나 PHP의 Builtin Server를 운영서비스에서는 사용하지 않습니다. 정적파일처리(img, css, js등) 성능이 떨어지기 때문입니다. 개발환경에서는 BuiltIn Server 도 꽤 괜찮습니다. (저는 그누보드의 개발시 자주 활용합니다. 디버깅이 편합니다.)

 

참고로 PHP에서 api router 개발시 다음과 같이 활용하시면 됩니다.

php -S localhost:8000 router.php 

자세한 설명은 공식문서 https://www.php.net/manual/en/features.commandline.webserver.php 를 참고하세요.

 

주제가 조금 엇나갔는데, 웹서버의 라우팅 기능을 설정해보겠습니다.

먼저 api 를 어떤 경로로 서비스  할지 정해야 합니다.

저는 그누보드에 플러그인 형태로 서비스할 예정입니다.

url 경로는 다음과 같은 형태이고,,,

https://api_demo.solgnu.com/api/v1/------  

 

파일위치는(그누보드가 설치된 위치가 /var/www/api_demo/입니다.)

그누보드_설치위치/plugin/api/index.php 가 됩니다.

(아마 /plginin/api/ 에는 어제 얘기드린 DBClass PHP파일도 들어가고 Router.php 도 들어가겠죠. 이건 다음에..)

 

위의 경로로 기준으로

nginx route 설정은 

location /api/ {
    root /var/www/api_demo/plugin/api/

    try_files $uri /api/index.php$is_args$args;
}

 

apache의 경우 

RewriteRule api/(.*) /plugin/api/index.php?$1 [L]

 

입니다. (아직 개발전이라,  좀더 디테일하게 가이드를 작성할 예정입니다.) 

 

웹서버의 라우터 설정이 추가되면, 해당 경로의 모든 요청이 /plugin/api/index.php 로 넘어오게 됩니다.

api의 모든 처리는 이 index.php 하나에서 처리하게 됩니다.

 

Router 를 설정하지 않는다면, ajax 파일로 처리해야 합니다.(이건 restful 하지 않으니, rest api 가 아닌 그냥 api 입니다.)

/plugin/api/api_common.php 파일 형태로 만들어지겠죠.

 

다음엔 실제 Php 에서 라우팅 처리(이미 여러 분들이 쓰고 계신 PHP class를 활용하여) 를 해보도록 하겠습니다.

 

 

추천
0
  • 복사

댓글 2개

저도 그걸 사용합니다. 대신 커스텀을 조금 했습니다. 좀더 커스텀을 하고 싶었는데, 코드에 난해한 파트가 있어서, 좀 아쉽습니다.
© SIRSOFT
현재 페이지 제일 처음으로