C# .NET web api 从 post 请求返回

Nor*_*gul 2 .net c# api json

我正在向返回 JSON 数据的路由发出 POST 请求。

    [HttpPost("api/v1/testGetAll")]
    public object Test([FromBody]object filteringOptions)
    {
        return myService.GetLogs(filteringOptions).ToArray();
    }
Run Code Online (Sandbox Code Playgroud)

路由工作正常,过滤工作正常,当我在 Postman 中测试路由时,我得到了正确的响应。然而,这只是一个后端,我想从我的自定义 API 网关调用这个路由。

我面临的问题是得到准确的回应。相反,我正在获取成功状态、标题、版本、请求消息等。

    public object TestGetAll(string ApiRoute, T json)
    {
        Task<HttpResponseMessage> response;
        var url = ApiHome + ApiRoute;
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(url);
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
            try
            {
                response = client.PostAsync(url, new StringContent(json.ToString(), Encoding.UTF8, "application/json"));

                return response.Result;
            }
            catch (Exception e)
            {
                ...
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得准确的内容?

Tom*_*Tom 6

您需要从响应中读取内容。

var contentString = response.Result.Content.ReadAsStringAsync().Result;
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您可以将字符串响应反序列化为您想要返回的对象。

public async Task<TResult> TestGetAll<TResult>(string apiRoute, string json)
{
    // For simplicity I've left out the using, but assume it in your code.

    var response = await client.PostAsJsonAsync(url, json);

    var resultString = await response.Content.ReadAsStringAsync();

    var result = JsonConvert.DeserializeObject<TResult>(resultString);

    return result;
}
Run Code Online (Sandbox Code Playgroud)