如何使用中间API传递JSON对象?

时间:2016-09-05 10:21:04

标签: c# asp.net-web-api2

我有两个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对象?

1 个答案:

答案 0 :(得分:2)

如果你想返回带响应的json对象,请执行:

return ResponseMessage(response);