{"id":5248,"date":"2026-04-11T13:23:20","date_gmt":"2026-04-11T04:23:20","guid":{"rendered":"https:\/\/www.freelifemakers.org\/wordpress\/?p=5248"},"modified":"2026-04-11T13:55:43","modified_gmt":"2026-04-11T04:55:43","slug":"webserver-httplib-macos-linux","status":"publish","type":"post","link":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/2026\/04\/11\/webserver-httplib-macos-linux\/","title":{"rendered":"[Webserver]httplib webserver+client(MacOS,Linux)"},"content":{"rendered":"\n<p>\ud83d\udc49\ud83c\udffb \uc6f9\uac1c\ubc1c\uc774 \uc544\ub2cc \uc77c\ubc18 c++ \uc571 \uac1c\ubc1c\uc2dc \uc6f9\uc11c\ubc84\uc640 \ud1b5\uc2e0\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.<br>This explains how to communicate with a web server when developing general C++ apps, not web development.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb http,https,json \ud30c\uc2f1\uc5d0 \ub300\ud55c \ubd80\ubd84\uc744 \ub2e4\ub8f9\ub2c8\ub2e4.<br>This covers http, https, and JSON parsing.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb \ubc29\ud654\ubcbd \uc124\uc815\uc774\ub098 https\uc124\uc815\ubd80\ubd84\uc740 \uc774\uc804 \uac8c\uc2dc\ubb3c\uc744 \ucc38\uace0 \ud558\uc138\uc694.<br>Please refer to the previous post for firewall and HTTPS settings.<\/p>\n\n\n\n<p>\ud83d\udc49\ud83c\udffbHttp \uc11c\ubc84(MacOS\uc5d0\uc11c \ud14c\uc2a4\ud2b8)<br>HTTP server (tested on MacOS)<\/p>\n\n\n\n<p>\u2714\ufe0f \ucf54\ub4dc \/ code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"httplib.h\"\n#include &lt;iostream&gt;\n\nint main() {\n    httplib::Server svr;\n\n    svr.Get(\"\/\", &#91;](const httplib::Request&amp;, httplib::Response&amp; res) {\n        res.set_content(\"Hello HTTP\", \"text\/plain\");\n    });\n\n    std::cout &lt;&lt; \"Listening on http:\/\/0.0.0.0:5080\\n\";\n    svr.listen(\"0.0.0.0\", 5080);\n}<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ucef4\ud30c\uc77c \/ Compiling<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>g++ -o http_server http_server.cpp -std=c++11 -pthread<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc2e4\ud589 \/  run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/http_server<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"85\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-server-jpg-1024x85.jpg\" alt=\"\" class=\"wp-image-5250\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-server-jpg-1024x85.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-server-jpg-300x25.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-server-jpg-768x64.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-server-jpg-400x33.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-server-jpg-800x66.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-server-jpg.jpg 1304w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">http server<\/figcaption><\/figure>\n\n\n\n<p>\ud83d\udc49\ud83c\udffbHttp \ud074\ub77c\uc774\uc5b8\ud2b8 \/ Http client<\/p>\n\n\n\n<p>\u2714\ufe0f \ucf54\ub4dc \/ code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include \"httplib.h\"\n#include &lt;iostream&gt;\n\nint main() {\n    httplib::Client cli(\"http:\/\/127.0.0.1:5080\");\n\n    if (auto res = cli.Get(\"\/\")) {\n        std::cout &lt;&lt; \"status: \" &lt;&lt; res-&gt;status &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; \"body: \" &lt;&lt; res-&gt;body &lt;&lt; \"\\n\";\n    } else {\n        std::cerr &lt;&lt; \"request failed\\n\";\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ucef4\ud30c\uc77c \/ Compiling<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>g++ -o http_client http_client.cpp -std=c++11 -pthread<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc2e4\ud589 \/ run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/http_client<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"87\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-client-jpg-1024x87.jpg\" alt=\"\" class=\"wp-image-5253\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-client-jpg-1024x87.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-client-jpg-300x25.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-client-jpg-768x65.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-client-jpg-400x34.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-client-jpg-800x68.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/http-client-jpg.jpg 1136w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">http client<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb Https \uc11c\ubc84(Linux\uc5d0\uc11c \ud14c\uc2a4\ud2b8)<br>HTTPS Server (Tested on Linux)<\/p>\n\n\n\n<p>\u2b50\ufe0f libssl-dev \uc124\uce58\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4<br>libssl-dev must be installed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install libssl-dev<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ucf54\ub4dc \/ Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define CPPHTTPLIB_OPENSSL_SUPPORT\n#include \"..\/httplib.h\"\n#include &lt;iostream&gt;\n\nint main() {\n    httplib::SSLServer svr(\".\/fullchain.pem\", \".\/privkey.pem\");\n\n    if (!svr.is_valid()) {\n        std::cerr &lt;&lt; \"SSL server setup failed\\n\";\n        return 1;\n    }\n\n    svr.Get(\"\/\", &#91;](const httplib::Request&amp;, httplib::Response&amp; res) {\n        res.set_content(\"&lt;h1&gt;Hello HTTPS&lt;\/h1&gt;\", \"text\/html\");\n    });\n\n    std::cout &lt;&lt; \"Listening on https:\/\/0.0.0.0:5080\\n\";\n    svr.listen(\"0.0.0.0\", 5080);\n}\n<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ucef4\ud30c\uc77c \/ Compiling<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>g++ https_server.cpp -o https_server -std=c++11 -pthread <strong>-lssl -lcrypto<\/strong><\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc2e4\ud589 \/ Run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/https_server<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"87\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-server-jpg-1024x87.jpg\" alt=\"\" class=\"wp-image-5256\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-server-jpg-1024x87.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-server-jpg-300x25.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-server-jpg-768x65.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-server-jpg-400x34.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-server-jpg-800x68.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-server-jpg.jpg 1108w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">https server<\/figcaption><\/figure>\n\n\n\n<p>\ud83d\udc49\ud83c\udffbHttps \ud074\ub77c\uc774\uc5b8\ud2b8 \/ Https Client<\/p>\n\n\n\n<p>\u2714\ufe0f \ucf54\ub4dc \/ Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define CPPHTTPLIB_OPENSSL_SUPPORT\n#include \"..\/httplib.h\"\n#include &lt;iostream>\n\nint main() {\n    httplib::Client cli(\"https:\/\/yourhost.domain.org:5080\");\n\n    if (auto res = cli.Get(\"\/\")) {\n        std::cout &lt;&lt; res->status &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; res->body &lt;&lt; \"\\n\";\n    } else {\n        std::cerr &lt;&lt; \"request failed\\n\";\n    }\n}<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ucef4\ud30c\uc77c \/ Compiling<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>g++ https_client.cpp -o https_client -std=c++11 -pthread <strong>-lssl -lcrypto<\/strong><\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc2e4\ud589 \/ Run<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/https_client<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"81\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-client-jpg-1024x81.jpg\" alt=\"\" class=\"wp-image-5258\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-client-jpg-1024x81.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-client-jpg-300x24.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-client-jpg-768x61.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-client-jpg-400x32.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-client-jpg-800x64.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-client-jpg.jpg 1156w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">https client<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\ud83d\udc49\ud83c\udffb Https Json(Linux\uc5d0\uc11c \ud14c\uc2a4\ud2b8)<br>HTTPS JSON (Tested on Linux)<\/p>\n\n\n\n<p>\u2714\ufe0f Linux<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install nlohmann-json3-dev<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc124\uce58 \uacbd\ub85c \/ Installation path<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/usr\/include\/nlohmann\/json.hpp<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f MacOS<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew install nlohmann-json<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc124\uce58\uacbd\ub85c \/ Installation path<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/homebrew\/include\/nlohmann\/json.hpp<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc0dd\uc131\ub41c json.http\ud30c\uc77c\uc744 \uc791\uc5c5\uc911\uc778 \ub514\ub809\ud1a0\ub9ac\ub85c \ubcf5\uc0ac\ud569\ub2c8\ub2e4.<br>Copy the generated json.http file to the working directory.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cp \/usr\/include\/nlohmann\/json.hpp .\/<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc11c\ubc84\ucf54\ub4dc \/ Server Code<\/p>\n\n\n\n<p>&#8212; server.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define CPPHTTPLIB_OPENSSL_SUPPORT\n#include \"..\/httplib.h\"\n#include \"json.hpp\"\n#include &lt;iostream&gt;\n\nusing json = nlohmann::json;\n\nint main() {\n    httplib::SSLServer svr(\".\/fullchain.pem\", \".\/privkey.pem\");\n\n    if (!svr.is_valid()) {\n        std::cerr &lt;&lt; \"SSL server setup failed\\n\";\n        return 1;\n    }\n\n    svr.Get(\"\/api\", &#91;](const httplib::Request&amp;, httplib::Response&amp; res) {\n        json j = {\n            {\"ok\", true},\n            {\"msg\", \"hello\"},\n            {\"value\", 123}\n        };\n        res.set_content(j.dump(), \"application\/json\");\n    });\n\n    std::cout &lt;&lt; \"Listening on https:\/\/0.0.0.0:5080\\n\";\n    svr.listen(\"0.0.0.0\", 5080);\n}<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ud074\ub77c\uc774\uc5b8\ud2b8 \ucf54\ub4dc \/ Client Code<\/p>\n\n\n\n<p>&#8212; client.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#define CPPHTTPLIB_OPENSSL_SUPPORT\n#include \"..\/httplib.h\"\n#include \"json.hpp\"\n#include &lt;iostream>\n\nusing json = nlohmann::json;\n\nint main() {\n    httplib::Client cli(\"https:\/\/yourhost.domain.org:5080\");\n\n    if (auto res = cli.Get(\"\/api\")) {\n        json j = json::parse(res->body);\n        std::cout &lt;&lt; \"ok: \" &lt;&lt; j&#91;\"ok\"] &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; \"msg: \" &lt;&lt; j&#91;\"msg\"] &lt;&lt; \"\\n\";\n        std::cout &lt;&lt; \"value: \" &lt;&lt; j&#91;\"value\"] &lt;&lt; \"\\n\";\n    } else {\n        std::cerr &lt;&lt; \"request failed\\n\";\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \ucef4\ud30c\uc77c \/ Compiling<\/p>\n\n\n\n<p>&#8212; Linux<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>g++ -o server.cpp -std=c++11 -pthread <strong>-lssl -lcrypto<\/strong>\ng++ -o client.cpp -std=c++11 -pthread <strong>-lssl -lcrypto<\/strong><\/code><\/pre>\n\n\n\n<p>&#8212; MacOS<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>g++ server.cpp -o server -std=c++11 -pthread \\\n  -I\/opt\/homebrew\/opt\/openssl@3\/include \\\n  -L\/opt\/homebrew\/opt\/openssl@3\/lib \\\n  -lssl -lcrypto -framework Security -framework CoreFoundation\n\ng++ client.cpp -o client -std=c++11 -pthread \\\n  -I\/opt\/homebrew\/opt\/openssl@3\/include \\\n  -L\/opt\/homebrew\/opt\/openssl@3\/lib \\\n  -lssl -lcrypto -framework Security -framework CoreFoundation\n<\/code><\/pre>\n\n\n\n<p>\u2714\ufe0f \uc2e4\ud589 \/ Run<\/p>\n\n\n\n<p>&#8212; \uc11c\ubc84 \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc11c\ub85c \ub2e4\ub978 \ud130\ubbf8\ub110\uc5d0\uc11c \uc2e4\ud589\ud569\ub2c8\ub2e4.<br>Run the server and client in different terminals.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/server # server\n.\/client # client<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"99\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-server-jpg-1024x99.jpg\" alt=\"\" class=\"wp-image-5261\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-server-jpg-1024x99.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-server-jpg-300x29.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-server-jpg-768x74.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-server-jpg-400x39.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-server-jpg-800x77.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-server-jpg.jpg 1204w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">https json server<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"114\" src=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-client-jpg-1024x114.jpg\" alt=\"\" class=\"wp-image-5262\" srcset=\"https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-client-jpg-1024x114.jpg 1024w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-client-jpg-300x33.jpg 300w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-client-jpg-768x86.jpg 768w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-client-jpg-400x45.jpg 400w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-client-jpg-800x89.jpg 800w, https:\/\/www.freelifemakers.org\/wordpress\/wp-content\/uploads\/2026\/04\/https-json-client-jpg.jpg 1112w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">https json client<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udc49\ud83c\udffb \uc6f9\uac1c\ubc1c\uc774 \uc544\ub2cc \uc77c\ubc18 c++ \uc571 \uac1c\ubc1c\uc2dc \uc6f9\uc11c\ubc84\uc640 \ud1b5\uc2e0\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.This explains how to communicate with a web server when developing general C++ apps, not web development. \ud83d\udc49\ud83c\udffb http,https,json \ud30c\uc2f1\uc5d0 \ub300\ud55c \ubd80\ubd84\uc744 \ub2e4\ub8f9\ub2c8\ub2e4.This covers http, https, and JSON parsing. \ud83d\udc49\ud83c\udffb \ubc29\ud654\ubcbd \uc124\uc815\uc774\ub098 https\uc124\uc815\ubd80\ubd84\uc740 \uc774\uc804 \uac8c\uc2dc\ubb3c\uc744 \ucc38\uace0 \ud558\uc138\uc694.Please refer to the previous post for firewall [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,1],"tags":[],"class_list":["post-5248","post","type-post","status-publish","format-standard","hentry","category-cpp","category-uncategorized","missing-thumbnail"],"_links":{"self":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=5248"}],"version-history":[{"count":21,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5248\/revisions"}],"predecessor-version":[{"id":5252,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/5248\/revisions\/5252"}],"wp:attachment":[{"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=5248"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=5248"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.freelifemakers.org\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=5248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}