mirror of
https://github.com/yhirose/cpp-httplib
synced 2024-11-21 14:29:10 -07:00
Simplified the sample code.
This commit is contained in:
parent
ace3bb6caf
commit
7c803330e0
2 changed files with 39 additions and 66 deletions
|
@ -10,81 +10,23 @@
|
||||||
|
|
||||||
using namespace httpsvrkit;
|
using namespace httpsvrkit;
|
||||||
|
|
||||||
std::string dump_request(Context& cxt)
|
|
||||||
{
|
|
||||||
std::string s;
|
|
||||||
char buf[BUFSIZ];
|
|
||||||
|
|
||||||
s += "================================\n";
|
|
||||||
|
|
||||||
sprintf(buf, "Method: %s\n", cxt.request.method.c_str());
|
|
||||||
s += buf;
|
|
||||||
|
|
||||||
sprintf(buf, "URL: %s\n", cxt.request.url.c_str());
|
|
||||||
s += buf;
|
|
||||||
|
|
||||||
std::string query;
|
|
||||||
for (auto it = cxt.request.query.begin(); it != cxt.request.query.end(); ++it) {
|
|
||||||
const auto& x = *it;
|
|
||||||
sprintf(buf, "(%s:%s)", x.first.c_str(), x.second.c_str());
|
|
||||||
query += buf;
|
|
||||||
}
|
|
||||||
sprintf(buf, "QUERY: %s\n", query.c_str());
|
|
||||||
s += buf;
|
|
||||||
|
|
||||||
//for (const auto& x : cxt.request.headers) {
|
|
||||||
for (auto it = cxt.request.headers.begin(); it != cxt.request.headers.end(); ++it) {
|
|
||||||
const auto& x = *it;
|
|
||||||
sprintf(buf, "%s: %s\n", x.first.c_str(), x.second.c_str());
|
|
||||||
s += buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
s += "================================\n";
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
if (true) {
|
const char* hi = "/hi";
|
||||||
const char* s = "abcde";
|
|
||||||
|
|
||||||
// DSL style
|
HTTP_SERVER("localhost", 1234) {
|
||||||
HTTP_SERVER("localhost", 1234) {
|
|
||||||
|
|
||||||
GET("/", {
|
GET("/", {
|
||||||
res.set_redirect("/home");
|
res.set_redirect(hi);
|
||||||
});
|
|
||||||
|
|
||||||
GET("/home", {
|
|
||||||
res.set_content(dump_request(cxt));
|
|
||||||
});
|
|
||||||
|
|
||||||
GET("/abcde", {
|
|
||||||
res.set_content(s);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Regular style
|
|
||||||
Server svr("localhost", 1234);
|
|
||||||
|
|
||||||
svr.get("/", [](Context& cxt) {
|
|
||||||
cxt.response.set_redirect("/home");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
svr.get("/home", [](Context& cxt) {
|
GET("/hi", {
|
||||||
cxt.response.set_content(dump_request(cxt));
|
res.set_content("Hello World!");
|
||||||
});
|
});
|
||||||
|
|
||||||
svr.post("/item", [](Context& cxt) {
|
GET("/dump", {
|
||||||
cxt.response.set_content(dump_request(cxt));
|
res.set_content(dump_request(cxt));
|
||||||
});
|
});
|
||||||
|
|
||||||
svr.get("/item/([^/]+)", [](Context& cxt) {
|
|
||||||
cxt.response.set_content(dump_request(cxt));
|
|
||||||
});
|
|
||||||
|
|
||||||
svr.run();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
31
httpsvrkit.h
31
httpsvrkit.h
|
@ -170,6 +170,35 @@ inline void close_socket(socket_t sock)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string dump_request(Context& cxt)
|
||||||
|
{
|
||||||
|
const auto& req = cxt.request;
|
||||||
|
std::string s;
|
||||||
|
char buf[BUFSIZ];
|
||||||
|
|
||||||
|
s += "================================\n";
|
||||||
|
|
||||||
|
sprintf(buf, "%s %s", req.method.c_str(), req.url.c_str());
|
||||||
|
s += buf;
|
||||||
|
|
||||||
|
std::string query;
|
||||||
|
for (auto it = req.query.begin(); it != req.query.end(); ++it) {
|
||||||
|
const auto& x = *it;
|
||||||
|
sprintf(buf, "%c%s=%s", (it == req.query.begin()) ? '?' : '&', x.first.c_str(), x.second.c_str());
|
||||||
|
query += buf;
|
||||||
|
}
|
||||||
|
sprintf(buf, "%s\n", query.c_str());
|
||||||
|
s += buf;
|
||||||
|
|
||||||
|
for (auto it = req.headers.begin(); it != req.headers.end(); ++it) {
|
||||||
|
const auto& x = *it;
|
||||||
|
sprintf(buf, "%s: %s\n", x.first.c_str(), x.second.c_str());
|
||||||
|
s += buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
void Response::set_redirect(const char* url)
|
void Response::set_redirect(const char* url)
|
||||||
{
|
{
|
||||||
headers.insert(std::make_pair("Location", url));
|
headers.insert(std::make_pair("Location", url));
|
||||||
|
@ -379,6 +408,8 @@ inline void Server::process_request(FILE* fp_read, FILE* fp_write)
|
||||||
|
|
||||||
// Read headers
|
// Read headers
|
||||||
read_headers(fp_read, cxt.request.headers);
|
read_headers(fp_read, cxt.request.headers);
|
||||||
|
|
||||||
|
printf("%s", dump_request(cxt).c_str());
|
||||||
|
|
||||||
// Routing
|
// Routing
|
||||||
cxt.response.status = 404;
|
cxt.response.status = 404;
|
||||||
|
|
Loading…
Reference in a new issue