sample.cc 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // sample.cc
  3. //
  4. // Copyright (c) 2012 Yuji Hirose. All rights reserved.
  5. // The Boost Software License 1.0
  6. //
  7. #include <httpsvrkit.h>
  8. #include <cstdio>
  9. using namespace httpsvrkit;
  10. int dump_request(Context& cxt)
  11. {
  12. auto& body = cxt.response.body;
  13. char buf[BUFSIZ];
  14. body += "================================\n";
  15. sprintf(buf, "Method: %s, URL: %s\n",
  16. cxt.request.method.c_str(),
  17. cxt.request.url.c_str());
  18. body += buf;
  19. //for (const auto& x : cxt.request.headers) {
  20. for (auto it = cxt.request.headers.begin(); it != cxt.request.headers.end(); ++it) {
  21. const auto& x = *it;
  22. sprintf(buf, "%s: %s\n", x.first.c_str(), x.second.c_str());
  23. body += buf;
  24. }
  25. body += "================================\n";
  26. return 200;
  27. }
  28. int main(void)
  29. {
  30. Server svr;
  31. svr.get("/", [](Context& cxt) -> int {
  32. dump_request(cxt);
  33. return 200;
  34. });
  35. svr.post("/item", [](Context& cxt) -> int {
  36. dump_request(cxt);
  37. cxt.response.body += cxt.request.url;
  38. return 200;
  39. });
  40. svr.get("/item/([^/]+)", [](Context& cxt) -> int {
  41. dump_request(cxt);
  42. cxt.response.body += cxt.request.params[0];
  43. return 200;
  44. });
  45. svr.run("localhost", 1234);
  46. }
  47. // vim: et ts=4 sw=4 cin cino={1s ff=unix