در اینجا یک مثال ساده از نحوه استفاده از Cpprestsdk برای پیاده سازی یک وب سرویس براتون قرار دادم:
#include <cpprest/http_client.h>
#include <cpprest/json.h>
using namespace web;
using namespace web::http;
using namespace web::http::client;
using namespace utility::conversions;
int main() {
http_client client(web::uri(to_string_t("http://localhost:8080/api")));
client.request(methods::GET).then([](http_response response) {
if (response.status_code() == status_codes::OK) {
return response.extract_json();
}
return pplx::task_from_result(json::value());
}).then([](json::value json) {
std::wcout << L"Response: " << json[L"message"].as_string() << std::endl;
}).wait();
return 0;
}
این کد یک وب سرویس ایجاد میکند که به درخواستهای HTTP ورودی در http://localhost:8080/api گوش میدهد و به درخواستهای دریافتی GET با یک شی JSON حاوی فیلد «پیام» با مقدار «Hello, World!» پاسخ میدهد.
کتابخانه Cpprestsdk یک API با کاربری آسان برای رسیدگی به درخواستها و پاسخهای HTTP فراهم میکند. کلاس http_listener برای ایجاد شنونده ای استفاده می شود که به درخواست های دریافتی در یک URL خاص گوش می دهد. متد پشتیبانی برای تعیین روشهای HTTP که شنونده باید پشتیبانی کند استفاده میشود و تابع لامبدا که به عنوان آرگومان دوم ارسال میشود، هنگام دریافت درخواست آن متد فراخوانی میشود.
در این مثال مشخص می کنیم که شنونده باید از متد GET پشتیبانی کند و زمانی که درخواست GET دریافت می شود، یک شی JSON حاوی یک فیلد "پیام" با مقدار "Hello, World!" ایجاد می کنیم. و با یک کد وضعیت OK 200 و شی JSON به عنوان بدنه پاسخ به درخواست پاسخ دهید.
در نهایت، ما متد open را در شنونده فراخوانی می کنیم تا شروع به گوش دادن به درخواست های دریافتی کند و یک حلقه را وارد می کنیم تا سرویس به طور نامحدود در حال اجرا بماند.
کد سمت کللینتش هم به صورت زیر میشه نوشت.
#include <cpprest/http_listener.h>
#include <cpprest/json.h>
using namespace web;
using namespace http;
using namespace http::experimental::listener;
using namespace utility::conversions;
int main() {
http_listener listener(web::uri(to_string_t("http://localhost:8080/api")));
listener.support(methods::GET, [](http_request request) {
json::value response;
response[L"message"] = json::value::string(U("Hello, World!"));
request.reply(status_codes::OK, response);
});
listener.open().wait();
while (true);
return 0;
}