gpt4 book ai didi

asp.net-web-api - 如何在 WebAPI 中访问序列化的 JSON

转载 作者:行者123 更新时间:2023-12-02 04:55:40 24 4
gpt4 key购买 nike

如何从 WebApi 中的 Controller 方法访问 JSON?例如,我想访问作为参数传入的反序列化客户和序列化客户。

public HttpResponseMessage PostCustomer(Customer customer)
{
if (ModelState.IsValid)
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, customer);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = customer.Id }));
return response;
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
}
}

最佳答案

您将无法在 Controller 中获取 JSON。在 ASP.NET Web API 管道中,绑定(bind)发生在操作方法执行之前。媒体格式化程序会读取请求主体 JSON(这是一次读取流)并在执行到您的操作方法时清空内容。但是,如果您在绑定(bind)之前从管道中运行的组件读取 JSON,比如消息处理程序,您将能够像这样读取它。如果必须在action方法中获取JSON,可以将其存储在properties字典中。

public class MessageContentReadingHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request,
CancellationToken cancellationToken)
{
var content = await request.Content.ReadAsStringAsync();

// At this point 'content' variable has the raw message body
request.Properties["json"] = content;

return await base.SendAsync(request, cancellationToken);
}
}

从操作方法中,您可以像这样检索 JSON 字符串:

public HttpResponseMessage PostCustomer(Customer customer)
{
string json = (string)Request.Properties["json"];
}

关于asp.net-web-api - 如何在 WebAPI 中访问序列化的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18038490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com