From 2e35831bff835cf092da9985402d603bd106a143 Mon Sep 17 00:00:00 2001 From: zsxxsz Date: Sun, 30 Jun 2019 09:54:58 +0800 Subject: [PATCH] add one faq for acl::HttpServletRequest --- FAQ.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/FAQ.md b/FAQ.md index c1c776df9..c02432059 100644 --- a/FAQ.md +++ b/FAQ.md @@ -23,7 +23,8 @@ * [2. acl HTTP 服务器是否支持文件上传功能?](#2-acl-http-服务器是否支持文件上传功能) * [3. acl HTTP 模块是否支持服务器/客户端两种模式?](#3-acl-http-模块是否支持服务器客户端两种模式) * [4. acl HTTP 模块是否支持 websocket 通信协议?](#4-acl-http-模块是否支持-websocket-通信协议) - * [5. acl HTTP 模块是否支持 session?](#5-acl-http-模块是否支持-session) + * [5. acl HTTP 模块是否支持 session?](#5-acl-http-模块是否支持-session) + * [6. 从 acl::HttpServletRequest 为何读不到 json 或 xml 数据体?](#6-从-acl::httpservletrequest-为何读不到-json-或-xml-数据体) * [(三)、Redis 模块](#三redis-模块) * [1. acl redis 库是否支持集群功能?](#1-acl-redis-库是否支持集群功能) * [2. acl redis 库是如何划分的?](#2-acl-redis-库是如何划分的) @@ -130,6 +131,19 @@ lib_acl_cpp 库是以动态加载方式加载 mysql 动态库的,所以在编 #### 5. acl HTTP 模块是否支持 session? 支持。acl HTTP 模块当用在服务器编程时支持 session 存储,目前支持使用 memcached 或 redis 存储 session 数据。 +#### 6. 从 acl::HttpServletRequest 为何读不到 json 或 xml 数据体? +当 HTTP 客户端请求的数据体为 json 或 xml 时,默认情况下从 acl::HttpServletRequest 对象中是读不到 json/xml 数据的,主要原因在于 HttpServletRequest 内置了自动读取并解析 json/xml/x-www-form-urlencoded 类型数据的功能,使用者只需直接获取解析后的对象即可,如针对 json 类数据体: + +```c++ +void get_json(acl::HttpServletRequest& req) +{ + acl::json* json = req.getJson(); + ... +} +``` + +如果应用想自己读取并解析 json 数据,则需要在调用 acl::HttpServlet::setParseBody(false),禁止 acl::HttpServletRequest 类对象内部自动读取数据。 + ### (三)、Redis 模块 #### 1. acl redis 库是否支持集群功能? 答案:是,acl redis 客户端库同时支持集群和单机方式的 redis-server。