我有一个API端点。控制器的动作看起来是这样的 -
public IHttpActionResult Post(string entityType, SomeModel someModel)
这里SomeModel
是一个视图模型,它看起来像这样 -
public class SomeModel
{
public long? Id { get; set; }
public long EntityId { get; set; }
public string Text { get; set; }
}
我打电话从angularjs结束这个API终点 -
return $http({
method: 'POST',
url: ENV.apiEndpoint + 'tags',
params:{
// here I want to pass parameters which will automatically map into API's two parameter(one string and the other view model)
}
});
我不想改变我的API端点。我的问题是如何从角端,这将自动地映射到API方法的参数通过参数。
我已经尝试了一些事情 -
var someModel = {id: 1, text:"something", entityId: 12}
return $http({
method: 'POST',
url: ENV.apiEndpoint + 'tags',
params:{
entityType: entityType,
someModel: JSON.stringify(someModel)
}
});
要么,
var someModel = {id: 1, text:"something"}
return $http({
method: 'POST',
url: ENV.apiEndpoint + 'tags',
params:{
entityType: entityType,
id: 1,
text: "something",
entityId: 12
}
});
这些都不似乎工作。这意味着params为不能正确得到映射到API的方法的参数。什么是通过PARAMS在这种情形下的理想方式?
我不想改变我的API方法的参数。我知道我可以使用[FromBody] or [FromURI]
。但我不想做那些。
你应该能够做到
$http({
method: 'POST',
url: ENV.apiEndpoint + 'tags',
params:{
entityType: entityType
},
data: someModel
});
通过在从http消息主体(数据)和值类型和字符串参数POST请求反序列化(参考)对象参数从URL参数(PARAMS)默认的网页API(和asp.net MVC)。