我有两个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对象?
答案 0 :(得分:2)
如果你想返回带响应的json对象,请执行:
return ResponseMessage(response);