http libevent api 服务:ehttp-api

jopen 9年前

ehttp-api

http libevent api service

Dependencies

以下需要安装

以下不需要安装

install guide

Except cJSON:

$ wget DPND  $ tar xf DPND.tar*  $ cd DPND  $ ./configure # Optional, if it has  $ make  $ sudo make install    # libevhtp 的特殊处理  由于内网的 http 服务,可以将 openssl 禁掉.  $ cd libevhtp-*  $ vim evhtp.h  加入以下内容:  #define EVHTP_DISABLE_SSL 1    安装成功后执行:  $ cd /usr/local/include/evhtp  $ sudo cp * ../    # libzdb 安装后的特殊处理  $ cd /usr/local/include/zdb  $ sudo cp * ../

注意事项

新 clone 的项目请依次执行以下的命令:

$ git submodule init  $ git submodule update

需要参考 conf 目录中 *.sample.conf 配置生成开发或线上环境服务配置文件.

$ cp conf/server.sample.json conf/server.json  $ cp conf/zlog.sample.conf conf/zlog.conf  将配置文件中修改为真实可用的资源.

Q&A

Mac 下报错: dyld: Library not loaded: libmysqlclient.18.dylib

参考方法:  $ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

bigint 如何处理?

传输出层采用字符串,业务使用的时候转成数字.

#include <stdlib.h>    long  strtol(const char *restrict str, char **restrict endptr, int base);    long long  strtoll(const char *restrict str, char **restrict endptr, int base);    unsigned long  strtoul(const char *restrict str, char **restrict endptr, int base);    unsigned long long  strtoull(const char *restrict str, char **restrict endptr, int base);

如何防SQL注入

  1. 优先考虑使用 Connection_prepareStatement.
  2. 其次,由于客户端提交数据经过 filter 处理后,变成了 cJSON 对象,会对字符串中的双引号加上转义符,如果是手工拼 SQL,只要用双引号引起字符串即可防注入.形如:

    ResultSet_T result = Connection_executeQuery(db, "SELECT id, nickname, mobile, email FROM demo WHERE email = \"%s\"", email->valuestring);

项目地址: https://github.com/hy0kl/ehttp-api