반응형

JSON 7

C++ REST API 사용 강좌 : #2 HTTP POST (boost beast 활용)

이번에는 C++ boost beast를 활용하여 JSON을 인자로 REST API을 호출하여 데이터를 받는 예제를 살펴보도록 하겠습니다. 이 강좌는 C++ REST API 사용 강좌 : #1 HTTP GET (boost beast 활용)에서 이러지는 강좌로 설명 소스가 비슷한 관계로 해당 글에서 설명한 내용(UTF-8, 비동기 처리 등)은 이 글에 없는 관계로 해당 글도 꼭 참고 부탁드립니다. 이번에 살펴볼 소스는 아래와 같습니다. #include #include #include #include #include #include using namespace std; int main(int argc, char* argv[]) { boost::asio::io_context ioc; boost::asio::ip..

강좌 2022.05.12

C++ REST API 사용 강좌 : #1 HTTP GET (boost beast 활용)

근래에는 TCP/IP로 바로 통신하는 프로그램보다는 REST API를 이용하여 통신하는 프로그램이 대세인 듯 보입니다. 여기서는 C++로 REST API를 사용하는 방법을 알아보도록 하겠습니다. 강좌는 boost를 사용하였으며 boost에서 HTTP 통신 관련 상위 라이브러리인 boost beast를 사용합니다. REST API의 기본이 되는 GET 메소드를 이용하여 데이터를 가져오는 방법을 살펴보겠습니다. GET 메소드를 이용하여 데이터를 가져오는 소스는 아래와 같습니다. 소스를 보면서 계속 설명하겠습니다. #include #include #include #include #include #include using namespace std; int main(int argc, char* argv[]) { ..

강좌 2022.05.11

C++ boost json array 생성 및 파싱 예제

boost json라이브러리를 사용할 때 json array를 생성하거나 파싱하는 예제입니다. 사용법은 예제가 간단하게 되어 있는 관계로 예제를 이해하시면 됩니다. #include #include using namespace std; using namespace boost; int main(int argc, char* argv[]) { json::value jv1 = { { "Hello", "World1" } }; json::value jv2 = { { "Hello", "World2" } }; json::object jo1; jo1["test1"] = jv1; jo1["test2"] = jv2; std::string str1 = json::serialize(jo1); cout

SPA 웹 #2: REST API Server: 노드(Node.js) vs 스프링부트(Spring Boot)

들어가면서 이 글은 SPA 웹 #1: Vue.js + REST API Server에서 이어지는 글입니다. REST API 서버를 노드(Node.js)와 스프링부트(Spring Boot)로 몽고DB를 이용하여 구현하여 보았습니다. 몽고DB를 이용한 것은 만들고 있는 시스템트레이딩 프로그램이 몽고DB를 이용하고 있기 때문입니다. 워낙 기술적으로 유명한 것들이라 기술적 호기심으로 두 개의 기술로 다 구현하여 보았습니다. 어떻게 보면 이번에 만든 것이 간단한 것이라 기술적 프리뷰로 어느쪽으로 계속 개발할지를 알아보는 프로토타입의 의미도 있었습니다. REST API를 이용하는 부분은 스크린샷의 1, 2, 3부분의 데이터 입니다. 노드(Node.js) 기본적으로는 앱 서버로 많이 이용되는 듯 보였습니다. 참고로 서..

개발이야기 2022.05.03

C++ boost json 구조체와 json 문자열간 변환 예제

boost json라이브러리를 사용하면 구조체와 json문자열 간의 상호 변환이 간단합니다. 여기서는 간단한 변환 예를 살펴보며 사용법을 알아보겠습니다. 우선 아래와 같은 간단한 예로 살펴보겠습니다. #include #include #include using namespace std; struct user { int id; string name; bool login; }; void tag_invoke(boost::json::value_from_tag, boost::json::value& jv, user const& u) { jv = { {"id", u.id}, {"name", u.name}, {"login", u.login} }; } user tag_invoke(boost::json::value_to_t..

C++ boost json용 라이브러리(boost.json)

boost 1.75 이전 버전은 json을 사용하기 위하여 property_tree를 사용하였습니다. 1.75 버전부터 json을 전문적으로 지원하는 boost.json라이브러리가 생겼습니다. boost.json을 사용하는 Hello World입니다. #include #include #include using namespace boost; using namespace std; int main(int argc, char* argv[]) { json::value jv = { { "Hello", "World" } }; std::string str = json::serialize(jv); cout

C++ boost json(property_tree) Hello World

boost의 property_tree를 이용한 json Hello World입니다. boost 버전 1.75부터 json을 정식 지원하는 것 같은데 인터넷에 많이 있는대로 property_tree를 이용하여 json을 다룬다면 가장 기본이 되는 코드입니다. #define BOOST_BIND_GLOBAL_PLACEHOLDERS #include #include #include #include using namespace std; using boost::property_tree::ptree; int main(int argc, char* argv[]) { ptree root; root.add_child("Hello", ptree("World")); ostringstream oss; write_json(oss, ..

반응형