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

标签 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 对象的事实?

最佳答案

如果你想返回响应中的 json 对象,只需执行以下操作:

return ResponseMessage(response);

关于c# - 如何使用中间 API 传递 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39328490/

相关文章:

c# - 异常后串口不存在

c# - 我需要一个 CSharp 脚本 (.csx) 运行程序,如 csi.exe,用于构建代理机器

json - Newtonsoft.json IsoDateTimeConverter 和 DateFormatHandling

c# - IAuthenticationFilter 中的 ActionContext.ActionArguments 为空

ajax - Preflight request ok,然后,auth之后,response does not contain allow cors header

c# - Swagger/Swashbuckle 不适用于 Visual Studio 2013 Web API 2 项目

C# 调用一个事件

c# - 为什么 WPF 中的 UI 控件具有线程亲和性?

c# - 声音播放器未播放声音

c# - 在 ASP.Net Web Api 2 中使用 PUT 动词上传文件