C++Rest SDK 将长数据类型传递到请求正文中导致 400 Bad Request

C++Rest SDK Passing a long data type into request body results in 400 Bad Request

我的 Swagger 文档定义了一个预期在请求中发送的长数据类型,例如:

    size:
      type: integer
      format: int64
      description: 'Some size'

我在 C++ 中使用以下代码创建请求:

web::json::value postData = web::json::value::object();

如果我在正文中传递一个硬编码值(即 50 左右),我会得到 200 OK 响应,这很好

postData[L"size"] = web::json::value::number(50);

但是,如果我将此值作为 long 或 int64_t 数据类型变量传递,如下所示,我会收到 400 Bad Request

long size = 50;   //or int64_t, it results with same error
postData[L"size"] = web::json::value::number(size);

问题是我使用 MockLabs 创建模拟调用。 因此,在那里我将 POST 请求主体定义为:

{ "size":1 }

因此,如果我传入的 POST 请求的值不同于 1(即 50),我将得到 400 Bad Request;否则,我会得到 200 OK。如果你保留这个POST请求体,那么你只能发送size=1,其他的都会return 400 Bad Request.

因为我硬编码 1,所以我得到 200 OK 但是当我在我的代码中使用一个变量(不同于 1)时,我会得到 400 Bad Request。

解决方法: 只需在您的模拟服务器(我使用 MockLabs)中删除 POST 请求主体定义并将其留空。然后它将接受任何带有正文的 POST 请求(即 { "size":1 }{ "size":450 },或 { "size":8 },或您想要的任何其他整数),并将以 200 OK 响应。