如何从REST API的 RESTinio查询中获取 'long'、'double' 等信息?

后端开发 2026-07-08

我开始使用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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章