从另一个 API 调用 API 操作,读取 json 响应并向其添加一些额外的属性
Calling an API action from another API, reading the json response and adding some extra properties to it
我有一个 .netcore 网站 api(localApi) 调用另一个网站 api(remoteApi)。
remoteApi returns json 并且我的目标是向那个 json 添加一个新的 属性 并且 return 它作为 json 到调用 localApi 的调用者.
到目前为止我的代码是这样的:
var httpResponse = await httpClient.PostAsync(remoteApi), httpContent);
// If the response contains content we want to read it!
if (httpResponse.Content != null)
{
responseContent = await httpResponse.Content.ReadAsStringAsync();
responseContent = responseContent.Insert(2, " \"isCachedResponse\": false,");
var retVal = await Task.Run(() => JsonConvert.SerializeObject(responseContent));
return Ok(retVal);
}
这种方法的问题是响应是一个字符串而不是 json。
如下所示:
"\"{ \"isCachedResponse\": true, \\"remoteApiResponse\\":{ \\"applicationId\\":\\"10001000000300071\\", \\"reasons\\":[ { \\"reason\\":\\"Score Cut Policy\\" } ], \\"decisionText\\":\\"Duplicate request; check UI for more information\\", \\"decisionCode\\":\\"Undecisioned\\", \\"officialNameOnFile\\":{ \\"firstName\\":\\"\\", \\"middleName\\":\\"\\", \\"lastName\\":\\"\\" } } }\""
我该如何解决这个问题?
你可以 return 一个纯字符串 ContentResult
因为你已经有了所需的 JSON 而不是开始一些额外的任务,做一些手动序列化和 returning一个 OkObjectResult
:
if (httpResponse.Content != null)
{
responseContent = await httpResponse.Content.ReadAsStringAsync();
responseContent = responseContent.Insert(2, " \"isCachedResponse\": false,");
return this.Content(responseContent, "application/json");
}
我有一个 .netcore 网站 api(localApi) 调用另一个网站 api(remoteApi)。 remoteApi returns json 并且我的目标是向那个 json 添加一个新的 属性 并且 return 它作为 json 到调用 localApi 的调用者.
到目前为止我的代码是这样的:
var httpResponse = await httpClient.PostAsync(remoteApi), httpContent);
// If the response contains content we want to read it!
if (httpResponse.Content != null)
{
responseContent = await httpResponse.Content.ReadAsStringAsync();
responseContent = responseContent.Insert(2, " \"isCachedResponse\": false,");
var retVal = await Task.Run(() => JsonConvert.SerializeObject(responseContent));
return Ok(retVal);
}
这种方法的问题是响应是一个字符串而不是 json。 如下所示:
"\"{ \"isCachedResponse\": true, \\"remoteApiResponse\\":{ \\"applicationId\\":\\"10001000000300071\\", \\"reasons\\":[ { \\"reason\\":\\"Score Cut Policy\\" } ], \\"decisionText\\":\\"Duplicate request; check UI for more information\\", \\"decisionCode\\":\\"Undecisioned\\", \\"officialNameOnFile\\":{ \\"firstName\\":\\"\\", \\"middleName\\":\\"\\", \\"lastName\\":\\"\\" } } }\""
我该如何解决这个问题?
你可以 return 一个纯字符串 ContentResult
因为你已经有了所需的 JSON 而不是开始一些额外的任务,做一些手动序列化和 returning一个 OkObjectResult
:
if (httpResponse.Content != null)
{
responseContent = await httpResponse.Content.ReadAsStringAsync();
responseContent = responseContent.Insert(2, " \"isCachedResponse\": false,");
return this.Content(responseContent, "application/json");
}