我已经开始使用(稳定版本 0.10.1)开发 HTTP 服务器cpp-netlib
,并且从可用文档中我不确定如何在服务器处理程序中访问 HTTP 请求标头。我知道可以使用这样的包装器来完成:
void operator()(async_server::request const &Request, async_server::connection_ptr pConnection)
{
http::impl::request_headers_wrapper<http::tags::http_async_server> Headers = headers(Request);
}
但是根据 in 的定义,not_quite_pod_request_base
这headers.hpp
实际上是一个成对的向量,如果我想例如查找是否存在某个标头,则很难搜索。如果没有其他选择,那么我当然会坚持这一点,但似乎最初它是作为一个多图,至少从以下方面来看headers_container.hpp
:
namespace boost { namespace network {
template <class Tag>
struct headers_container {
typedef std::multimap<
typename string<Tag>::type,
typename string<Tag>::type
> type;
};
} // namespace network
} // namespace boost
那么任何人都可以指出为什么会有这样的重新定义,或者我是否错过了某种方法来实际获取或者是具有“首选”方式来处理标题multimap
的包装器?至少在我看来,a 似乎更容易使用。vector
cpp-netlib
multimap
更新
我还快速浏览了 POCO 库,但不明白它们的身份验证类是否也仅用于客户端会话或服务器?如果有人可以对此提供提示,也许我仍然可以切换到 POCO,如果这会让生活变得更轻松。