본문 바로가기
프로그래밍/C++ rest(Casablanca)

C++로 Restful서버 만들기(casablanca) 2. Server Sample Code

by Hwan2 2019. 5. 28.
728x90
반응형

이번엔 GET을 통해 서버로부터 간단한 메시지를 얻어오는 TEST를 해보겠습니다.

 

우선 아래는 Sample Code 입니다.

 

#include <iostream>
#include <cpprest/http_listener.h>
using namespace std;
using namespace web::http;
using namespace web::http::experimental::listener;
int main(){
    http_listener listener(U("http://localhost:9090"));        //Server URL, Port 지정.
    listener.open().then([&listener](){cout << (U("\n start!!\n"));}).wait();    //Server open
    listener.support(methods::GET, [](http_request req){                        //support() 함수를 통해 GET방식 지정
            req.reply(status_codes::OK, U("hello wordl"));                        //Lamda방식으로 간단하게 구현.
            });
   
    while(true);
    listener.close();
    return 0;
}​

 

 

이렇게 작성 후 컴파일을 하면되는데 컴파일 하는 방법은 다음과 같습니다.

 

저 파일 이름이 simpleServer.cpp 라고 한다면

 

------------------------------------------------------------------------------------------------

$g++ -std=c++17 simpleServer.cpp -o a.out -lboost_system -lcrypto -lssl -lcpprest -lpthread

------------------------------------------------------------------------------------------------

 

이렇게 해주면 됩니다......

 

참조하는 동적라이브러리가 많네요.... 컴파일 시간도 좀 걸릴 겁니다.

 

나중에 makefile을 만들어서 간편하게 할 생각입니다. 또 stdafx.h(Precompiled Header)를 통해 컴파일 시간도 줄여볼 생각입니다.

 

컴파일이 되고 실행이 되면 아래와 같이 실행될 것입니다.

 

 

 

그럼 웹 주소창에 "http://localhost:9090"으로 접속하시거나

curl로 GET을 날려 확인해 보면 아래와 같이 나올 것입니다.

"curl -X GET localhost:9090"

 

 

이렇게 "hello world" 가 뜨는걸 확인할 수 있을 것입니다.

 

 

 

 

 

 

 

그럼 이제 외부에서 접속하도록 해보겠습니다. 

 

7번줄에 있는  http_listener listener(U("http://localhost:9090"));  

 

이 부분의 url 부분을 다음과 같이 수정해 주면 됩니다.

 

"http://0.0.0.0:9090"

 

그러면 외부에서 서버측 IP주소를 입력하면 접속이 됩니다.

 

하지만 linux 특성상 iptables에 의해 모든 port가 막혀있습니다.(기본적인것들 제외)

 

때문에 포트를 열어 준 후 접속을 한다면 다음과 같은 페이지를 확인할 수 있을 것입니다.

 

이걸로 간단한 Restful http 서버를 만들어 보았습니다.

 

이 simple 예제를 활용해서 웹 서버를 개발하면 되겠습니다.

 

아래는 casablanca의 class api문서 입니다.

 

https://microsoft.github.io/cpprestsdk/namespaces.html

 

 

 

 

반응형

댓글


스킨편집 -> html 편집에서