C++实现一个http服务器

一个简单的博客后端服务器
github地址,持续更新
设计参考

#define MYSQLPP_MYSQL_HEADERS_BURIED
#include "httplib.h"
#include "rapidjson/document.h"
#include <mysql++/mysql++.h>
#include <iostream>
#include <string>
using namespace std;namespace {const string blog_db = "blog_system";const string blog_table = "blog_table";// 下面是数据库服务器的信息,我用的腾讯 mysql 数据库,需配置你自己的服务器信息const string blog_server = "";const string blog_user = "";const string blog_pass = "";const int blog_port = ;
}int main() {using namespace httplib;using namespace mysqlpp;using namespace rapidjson;mysqlpp::Connection conn(false);conn.set_option(new mysqlpp::SetCharsetNameOption("utf8"));if (conn.connect(blog_db.c_str(), blog_server.c_str(), blog_user.c_str(),blog_pass.c_str(), blog_port)) {cout << "success" << endl;} else {exit(0);}Server svr;svr.Get("/", [](const Request& req, Response& res) {cout << "/" << endl;res.set_content("hello world!", "text/plain");});svr.Get("/hi", [](const Request& req, Response& res) {cout << "hi" << endl;res.set_content("Hi", "text/plain");});svr.Post("/hello", [](const Request& req, Response& res) {res.set_content("hello post", "text/plain");});svr.Post("/blog", [&](const Request& req, Response& res) {Document d;cout << req.method << endl;cout << req.path << endl;cout << req.remote_addr << endl;cout << req.body << endl;if (d.Parse(req.body.c_str()).HasParseError()) {cout << "parse" << endl;return 1;}auto title = d["title"].GetString();auto content = d["content"].GetString();auto tag_id = d["tag_id"].GetInt();auto create_time = d["create_time"].GetString();unique_ptr<char> sql(new char[strlen(content) * 2 + 4096]);sprintf(sql.get(), "insert into blog_table values(null, '%s', '%s', '%d', '%s')",title, content, tag_id, create_time);cout << sql.get() << endl;mysqlpp::Query query = conn.query(string(sql.get()));try {query.execute();} catch(const mysqlpp::BadQuery& er) {cout << "query error :" << er.what() << endl;return -1;}});svr.listen("localhost", 1234);
}
  • CMakeLists.txt
cmake_minimum_required(VERSION 3.10)project (blog)set(CMAKE_CXX_STANDARD 11)include_directories(include)add_executable(service service.cpp)target_link_libraries(service pthread mysqlpp)

关注我的公众号
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KMP算法的java实现

package com.trs.utils;public class KMPStr {/** 在KMP算法中&#xff0c;最难求的就是next函数&#xff0c;如何理解next函数是一个难题&#xff0c;特别是knext[k]&#xff0c;这里* 需要指出的是当p[i]!p[j]时&#xff0c;我们只有通过回溯将k的值逐渐减小&#xff0c;貌似…

线段分割法实现微信抢红包

无意间看到的一种实现抢红包的方法&#xff0c;于是用C实现了一下。 将一个红包分成 n 份 具体的思路是&#xff0c;将一个红包看作是一个线段&#xff0c;线段的长就是红包总金额&#xff0c;然后在这个线段上随机切 n-1 刀&#xff0c;分成 n 份&#xff0c;然后抢红包的人依…

C++雪花算法实现

看来一下雪花算法的实现方法&#xff0c;用 c试着实现了一下&#xff0c;这里仅仅是实现了算法的流程&#xff0c;但是具体的细节&#xff0c;如并发、多线程访问等等没有具体考虑。 雪花算法的简单讲解参考 #include <sys/select.h> #include <iostream> #includ…

CAlayer层的属性

iOS开发UI篇—CAlayer层的属性 一、position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性&#xff1a;position和anchorPoint property CGPoint position; 用来设置CALayer在父层中的位置 以父层的左上角为原点(0, 0) property CGPoint anchorPoint; 称为“定位点”、…

Odoo9发行说明

2015年10月1日&#xff0c;期待已久的Odoo9正式发布。本文是Odoo9正式版发行说明&#xff0c;基于官网资料翻译。 译者: 苏州-微尘原文地址&#xff1a;https://www.odoo.com/page/odoo-9-release-notes译文地址&#xff1a;http://blog.csdn.net/wangnan537/article/details/4…

揭秘史上最完美一步到位的搭建Andoriod开发环境

Windows环境下Android开发环境搭建虽然不难而且网上资料众多&#xff0c;但是众多资料如出一折 忽略了很多细节&#xff0c;最终还是没能达到满意效果。 基本步骤如下&#xff1a;JDK安装、环境变量配置、Eclipse下载、AndoriodSDK下载安装、下载配置ADT但是到这里还不算完美搞…

【SQL】服务器环境下的SQL

一、大型数据库的三层体系结构 web服务器&#xff1a;比如在淘宝页面上&#xff0c;输入“牛肉干”&#xff0c;就是web服务器来处理&#xff0c;提交给应用服务器。 应用服务器&#xff1a;在获取到“牛肉干”这个请求后&#xff0c;应用服务器决定如何汇集结果&#xff0c;并…

即时聊天IM之二 openfire 整合现有系统用户

合肥程序员群&#xff1a;49313181。 合肥实名程序员群&#xff1a;128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojitqq.com 综述&#xff1a; 每天利用中午时间更新下这个知识点的的博客如果感兴趣的觉得更新慢了也别介意&#xff08;其它时间还是…

C#在ASP.NET4.5框架下的首次网页应用

运行效果预览: 先看实践应用要求: 1&#xff0e;编写一个函数&#xff0c;用于计算1&#xff01;2&#xff01;3&#xff01;4&#xff01;5&#xff01;&#xff0c;在控制台或页面输出运行结果。 2&#xff0e;在控制台或页面输出九九乘法表。 3&#xff0e;输入10个以内的整…

Android-Universal-Image-Loader三大组件DisplayImageOptions、ImageLoader、ImageLoaderConfiguration详解...

转 一、介绍 Android-Universal-Image-Loader是 一个开源的UI组件程序&#xff0c;该项目的目的是提供一个可重复使用的仪器为异步图像加载&#xff0c;缓存和显示。所以&#xff0c;如果你的程序里需要这个功能的话&#xff0c;那么不妨试试它。 因为已经封装好了一些类和方法…

Java小知识

内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。(1)、内部类仍然是一个独立的类&#xff0c;在编译之后内部类会被编译成独立的.class文件&#xff0c;但是前面冠以外部类的类名和$符号。(2)、内部类不能用普通的方式访问。成员变量成员变量静态成员变量。List遍…

初识EL

一、EL函数库介绍 由于在JSP页面中显示数据时&#xff0c;经常需要对显示的字符串进行处理&#xff0c;SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用。  这些EL函数在JSTL开发包中进行描述&#xff0c;因此在JSP页面中使用SUN公司的EL函数库&#xff0c;需要导入…

Scala学习笔记-环境搭建以及简单语法

关于环境的搭建&#xff0c;去官网下载JDK8和Scala的IDE就可以了&#xff0c;Scala的IDE是基于Eclipse的。 下面直接上代码&#xff1a; 这是项目目录&#xff1a; A是scala写的&#xff1a; package first import scala.collection.mutable.ListBufferobject A {def main(args…

UVa 12169 (枚举+扩展欧几里得) Disgruntled Judge

题意&#xff1a; 给出四个数T, a, b, x1,按公式生成序列 xi (a*xi-1 b) % 10001 (2 ≤ i ≤ 2T) 给出T和奇数项xi&#xff0c;输出偶数项xi 分析&#xff1a; 最简单的办法就是直接枚举a、b&#xff0c;看看与输入是否相符。 1 #include <cstdio>2 3 const int maxn …

【WCF安全】WCF 自定义授权[用户名+密码+x509证书]

1.x509证书制作(略) 2.直接贴代码 ----------------------------------------------------------------------服务端------------------------------------------------------------------------------------------- WCF服务 1 using System;2 using System.Collections.Generi…

ASP.NET Web API 数据提供系统相关类型及其关系

转载于:https://www.cnblogs.com/frankyou/p/4932651.html

openMVG跑自定义数据出错

使用自己拍摄的图片跑 openMVG 的 turtor_demo.py 时&#xff0c;出现错误&#xff0c;没有生成 sfm_data.bin DSC01988" model "DSC-RX100M6" doesnt exist in the database Please consider add your camera model and sensor width in the database.原因时数…

windows server 2003下安装iis6+php

参照http://www.myhack58.com/Article/sort099/sort0100/2012/35579.htm 这篇文章&#xff0c;即可&#xff01; 前 面我写了《windows安装PHP5.4Apache2.4Mysql5.5》的安装教程&#xff0c;本地实现是很简单的&#xff0c;但是有人还是喜欢用IIS来配置 PHP环境&#xff0c;部分…

winform自定义文件程序-- 不允许所请求的注册表访问权(ZSSQL)

常见问题1&#xff1a; 不允许所请求的注册表访问权 win7、win8 双击程序文件ZSSQL时候会出现 不允许所请求的注册表访问权 的弹窗异常 解决方法&#xff1a;ZSSQL.exe 右键 属性--兼容性--以管理员身份运行此程序 转载于:https://www.cnblogs.com/DemoLee/p/4173324.html

UITabBarController使用总结

刚看了几天教程就开始跟着开发了&#xff0c;以前也没学过C&#xff0c;太痛苦了~只能看看大神的博客&#xff0c;自己再总结学习一下了。 1.首先新建一个TabBarViewController继承于UITabBarController。然后什么都不用写&#xff0c;相当于装各个tab页的容器。 2.给每个视图都…