プライベートな連絡先の最初の情報
送料メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
サーバー.cpp
#include "httplib.h"
#include <iostream>
using namespace httplib;
int main(void)
{
Server svr;
svr.Get("/hello", [](const Request& req, Response& res) {
std::cout << "log, path=" << req.path << std::endl;
auto it = req.params.find("name");
std::string name;
if(it != req.params.end()){
name = it->second;
}
res.set_content("Hello "+name, "text/plain");
});
svr.listen("0.0.0.0", 50000);
}
カールさせて
$ curl "127.0.0.1:50000/hello?name=zhangsan"
Hello zhangsan%
クライアント.cpp
#include <httplib.h>
#include <iostream>
using namespace httplib;
int main(void){
Client cli("127.0.0.1", 50000);
if (auto res = cli.Get("/hello?name=zhangsi")) {
std::cout << res->status << std::endl;
std::cout << res->get_header_value("Content-Type") << std::endl;
std::cout << res->body << std::endl;
} else {
std::cout << "error code: " << res.error() << std::endl;
}
return 0;
}
クライアントを実行する
$ g++ tclient.cpp -g -std=c++11 -o tclient && ./tclient
200
text/plain
Hello zhangsi
ここで構造体とjson変換見るcpp struct json 相互変換
サーバー.cpp
#include <unistd.h>
#include "httplib.h"
#include <iostream>
#include <mockutil.h>
using namespace httplib;
int main(void)
{
Server svr;
UserUtil mock_user_util;
svr.Get("/hello", [](const Request& req, Response& res) {
std::cout << "log, path=" << req.path << std::endl;
auto it = req.params.find("name");
std::string name;
if(it != req.params.end()){
name = it->second;
}
res.set_content("Hello "+name, "text/plain");
});
svr.Get(R"(/user/(w+)/get)", [&](const Request& req, Response& res) {
auto uname = req.matches[1];
User* user = mock_user_util.get(uname.str());
std::string ret;
if(user==nullptr){
ret = "get no user(name="+uname.str()+")";
}else{
json j;
user->to_json(j);
ret = j.dump();
}
res.set_content(ret, "text/plain");
});
svr.Post(R"(/user/(w+)/set)", [&](const Request& req, Response& res) {
auto uname = req.matches[1];
User user;
user.from_json(req.body);
mock_user_util.set(user);
res.set_content("ok", "text/plain");
});
svr.listen("0.0.0.0", 50001);
std::cout << "1111" << std::endl;
}
クライアント.cpp
#include <httplib.h>
#include <iostream>
#include "mockutil.h"
using namespace httplib;
int main(void){
Client cli("127.0.0.1", 50001);
auto res = cli.Get("/user/zhangwu/get");
User user;
user.from_json(res->body);
std::cout << "get user, name=" << user.Name << ", Phone=" << user.MPhone.Num << std::endl;
user.MPhone.Num = 88888;
json j;
user.to_json(j);
auto res2 = cli.Post("/user/zhangwu/set", j.dump(), "application/json");
std::cout << "set user, name=" << user.Name << ", Phone=" << user.MPhone.Num << std::endl;
auto res3 = cli.Get("/user/zhangwu/get");
User userx;
userx.from_json(res3->body);
std::cout << "get after set, name=" << userx.Name << ", Phone=" << userx.MPhone.Num << std::endl;
return 0;
}
クライアントを実行する
$ g++ tclient.cpp -g -std=c++11 -I./ -o tclient && ./tclient
get user, name=zhangwu, Phone=12345
set user, name=zhangwu, Phone=88888
get after set, name=zhangwu, Phone=88888