NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    Web PHP에서 Restful을 이용한 서비스 개발하기. (php slim framework)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 음~ 솔직히 요즘에는 자바 스프링이나 노드를 사용하는 추세이긴하죠. 신규 프로젝트로 PHP를 사용하는곳은 지난 몇년간 본적이 없거든요. 스프링이나 스프링 부트로 진행하다가 최근에는 대부분 노드를 사용합니다. 저처럼 나이들고 옛날 기술에 머물러 있는 개발자는 자바가 뭔지 노드가 뭔지 잘 모르니까요. 그래서 PHP에 Apahce, MySQL을 사용해서 웹서버 환경을 만들곤 합니다. 아파치가 아닌 몽구스 웹서버를 사용해도 됩니다. 아무튼 제 환경은 APM(Apache, PHP, MySQL)입니다.

     

    뭔가 서비스를 하려면 웹호스팅을 받을텐데요. 비용을 줄이려면 리눅스 서버를 이용해야 합니다^^; PHP를 해보신 분들은 당연히 하시겠지만~ PHP 종속성 관리 도구인 Composer(컴포저)부터 설치해야 합니다 아나콘다나 npm 또는 nuget과 같은거라고 생각하시면 되구요. 아나콘다는 파이썬이고 누겟은 C#입니다. 뭐 이런게 중요한건 아니니깐~ 그냥 이런것들이 있구나 정도로 가볍게 읽고 넘어가주세요. 이들은 리눅스의 윰(Yum)이나 에이피티(Apt: Advanced Package Tool)와 다릅니다. 실력도 없는데 학원 강사를 몇년 했더니 말만 많아졌습니다-_-;

     

    자~ 이제 컴포저부터 설치 해볼까요? 아래 링크에서 윈도우용 "Composer-Setup.exe" 파일을 다운로드 하세요.

    https://getcomposer.org/download/

     

    윈도우에 설치하면 cmd에서 composer 명령을 사용할 수 있습니다. 아무튼, 리눅스에 설치하시는 분들은 아래 명령으로 설치하세요. CentOS는 wget이나 yum을 사용하면 되고, 우분투는 apt를 사용하면 됩니다. php가 설치되어 있다면 php로 해도 되구요. 저는 일단 다 설치되어 있는 상태입니다.

    curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin/

     

    컬(curl: Client URL)이 없으면, php로 설치해도 됩니다.

    php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/local/bin/

     

    사용하기 쉽게 심볼릭 링크를 하나 추가하세요.

    sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

     

    윈도우의 경우 cmd에서 컴포저가 설치된 폴더로 이동합니다. 그리고, PHP에서 Restful을 쉽게 개발할 수 있도록 도와주는 slim framework(슬림 프레임워크)를 설치하도록 하겠습니다. composer.json 파일을 하나 추가해주세요. 그리고, 내용은 아래와 같이 작성합니다.

    {
        "require": {
            "slim/slim": "3.*"
        }
    }

     

    슬림을 설치하기 위해 아래 명령을 실행하세요. 컴포저 제이슨에 설정한 패키지를 자동으로 설치 해줍니다.

    C:\xampp\php>composer install

    NskmFtK.png

     

     

    여러분들도 php 폴더에 벤더 폴더가 생성 되었을겁니다. 그리고 슬림 폴더도 생성되었구요. 벤더 폴더는... 으흠... 아무도 알고 싶어하지 않는 자질구래한 설명은 건너뛰겠습니다-_-; 종속성을 관리하기 위한 프로젝트 폴더 정도로만 이해하고 넘어가시면 되겠습니다. 아무튼~ 윈도우 환경에서 서비스할건 아니라서 리눅스 호스팅을 받는곳에 ftp로 접속해서 루트 또는 서비스 폴더에 vendor 폴더를 통째로 업로드 합니다.

    PQ9tXuI.png

     

     

    저같은 경우에는 아래와 같은 구조로 되어 있습니다. 이건 비주얼 스튜디오인데요. 비주얼 스튜디오 코드를 사용하는게 더 좋긴 합니다.

    cZ6xfNX.png

     

     

    이제~ 웹호스팅을 받는 서버에서 PHP로 Restful을 개발할 준비가 완료 되었습니다. 어떤가요? 참 쉽죠^^; 요즘은 종속성을 관리해주는 툴(Tool: 도구)들이 너무나 잘되어 있어서 개발자의 생산성이 엄청 좋아졌습니다. 요즘은 누구나 몇개월 공부해서 웹도 만들고 앱도 만들고 하거든요. 엔지엠 에디터와 같은 툴을 이용하면 업무 자동화도 누구나(?) 만들 수 있습니다-_-; 요즘~ 제품이 안팔리다보니 무리수를 둔거 같습니다. 죄송합니다_ _);

     

    자~ 지금까지 순서를 보면 리눅스에서 직접 설치하지 않고, 윈도우에서 설치 후 ftp로 호스팅중인 웹 서버로 올리는지 아시는분이 있을까요? 보통 IT팀(인프라 테크놀로지)이라고 부르는 인프라 조직이 있습니다. 서버관리와 계정, 권한, 방화벽, 가상화, 클라우드등등... 시스템 운영에 대한 전반적인 것들을 관리하고 유지보수 합니다. 개발자는 개발 업무에만 집중할 수 있도록 분리되어 있죠. 하지만~ 개발과 납기가 바쁜와중에 권한이나 방화벽등등... 여러가지 문제를 해결해주지 않으면 개발자만 개고생하게 됩니다. 이런일들이 자주 일어나는건 아니지만요^^; 아무튼~ 서버에 직접 접근해서 쉘을 실행하거나 권한을 바꾸는것을 용납하지 않습니다. 호스팅 서비스도 비슷합니다. ftp만 열어주고 직접 서버에 붙을수는 없어요. 그래서, 윈도우에서 컴포저를 통해 슬림을 설치해서 ftp로 업로드 하는 것입니다. 이방법 말고는 없으니까요~

     

    이제 본격적으로 Restful API를 작성 해봅시다. MyService.php 파일을 하나 추가하고, 아래와 같이 코드를 작성 해보세요. 간단한 get 방식의 API입니다.

    <?php
    use \Psr\Http\Message\ServerRequestInterface as Request;
    use \Psr\Http\Message\ResponseInterface as Response;
     
    require 'vendor/autoload.php';
     
    $app = new \Slim\App;
    
    $app->get('/hello/{name}', function (Request $request, Response $response) {
        $name = $request->getAttribute('name');
        $response->getBody()->write("Hello, $name");
     
        return $response;
    });
    app->run;

     

    클라이언트에서 Request(리퀘스트: 요청)하면 서버로부터 Response(리스폰스: 응답)을 받게 됩니다. 크롬에서 아래 주소로 접속 해봅니다.

    http://127.0.0.1/service/MyService.php/hello/NGMsoftware

     

    아래와 같은 결과를 확인할 수 있습니다.

    AEqSjm9.png

     

     

    post로 처리할수도 있는데요. post로 하면 약간 코딩을 해야 합니다. get과 post의 차이점은 다들 아실거라 생각해서 설명하지는 않겠습니다. 다만, post로 api를 만들면 html 코딩이 필요합니다. 당연히 form을 사용해야 하구요. Java나 C#은 HttpRequest와 HttpResponse 객체를 사용하면 됩니다. 클라이언트에서는 json-simple 패키지를 사용하거나 Newtonsoft.json 모듈을 사용하세요. 사실 이 둘 말고 딱히 다른건 없습니다. ㅎㅎ; php는 json_encode를 사용하면 됩니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.