我有两个 Web API 2 项目,其中一个充当代理,一个是 API。
我的代理签名是:
public async Task<IHttpActionResult> GetByCatId(string id)
代理项目调用我的隐藏 api,如下所示:
client.BaseAddress = new Uri(CatUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync($"GetCat/{id}");
这会返回一个 JSON 对象,我只想将其返回给调用者。
因为 c# 知道它是一个 JSON 对象,所以我必须将其解析为 JSON 对象(即 response.Content.ReadAsAsync<string>
)。但是我希望代理是愚蠢的并且不关心类型,所以我不能这样做,因为它会尝试将对象 JSON 反序列化为字符串并抛出异常。
如果我抓取流( response.Content.ReadAsStreamAsync()
),我可以将其解析为字符串,但是如果我在新响应中返回该字符串,它就不再意识到它是 JSON,而只是返回一个字符串而不是JSON 对象(即响应类似于 "{ content: "{ .... my json string all in one string ... }" }"
。
如何传递 JSON 对象,同时保留它是 JSON 对象的事实?
最佳答案
如果你想返回响应中的 json 对象,只需执行以下操作:
return ResponseMessage(response);
关于c# - 如何使用中间 API 传递 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39328490/