如何从REST API的 RESTinio查询中获取 'long'、'double' 等信息?
我开始使用vcpkg与 RESTinio来处理REST API。
为了从REST API请求中读取参数,需要使用如下代码:
const restinio::query_string_params_t qp =
restinio::parse_query(req->header().query());
if (qp.has("pszMachine"))
string_view_t pszMachine = qp["pszMachine"];
当结果需要是字符串时,这样工作没问题;但如果需要的是其他类型,比如一个 long,如下面的情况:
if (qp.has("AcceptTime"))
double dAcceptTime = qp["AcceptTime"];
我知道我可以自己实现一个“字符串到double的转换”,但RESTinio是否已经考虑到了这类功能?
解决方案
RESTinio为查询字符串参数提供了内置的类型转换功能(RESTinio - Casting Parameters)。
你可以像这样使用 cast_to<T>:
#include <restinio/cast_to.hpp>
if (qp.has("AcceptTime")) {
long dAcceptTime = restinio::cast_to<long>(qp["AcceptTime"]);
}
使用 value_or 时,这个可以进一步简化:
#include <restinio/value_or.hpp>
long dAcceptTime = restinio::value_or<long>(qp, "AcceptTime", 0);
value_or 在未找到 AcceptTime 键时将返回默认值。若转换失败,则会抛出异常。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。