我正在使用web-api 2和邮递员休息客户端进行测试。对象不能正确解码请求与网页api
我有它看起来像这样的方法定义:
[Route("api/bob/user")]
[HttpPut]
public IHttpActionResult UpdateUser(User user)
用户对象看起来像这样:
public class User : IUser
{
public string Firstname { get; set; }
public string Lastname { get; set; }
}
public interface IUser
{
string Firstname { get; set; }
string Lastname { get; set; }
}
在邮递员我已经设置一个放置请求和内容类型设置为JSON(application/json)我在主体中指定了以下原始数据:
{
"user": {"Firstname":"Bob","Lastname":"Smith"}
}
当我发送请求检测到对象类型但没有填充任何属性(它们全都为空),导致我认为反序列化失败。
如果我将方法签名更改为对象,则获取json字符串并将其反序列化为用户对象。如果可能,我更喜欢强打字。
我webapiconfig看起来是这样的:
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(
new MediaTypeHeaderValue("text/html"));
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new {id = RouteParameter.Optional});
我还添加了测试客户端的截图:
您在请求中使用了“Content-Type:application/json”吗? –
也可以尝试在“用户用户”之前添加“[FromBody]”属性 – MajkeloDev
是的,我是邮差有这个集合我已经添加了一个屏幕快照来显示这个。 –