Angularjs $resource POST 发送查询字符串而不是 JSON 对象(打字稿)
Angularjs $resource POST send query string not JSON object (Typescript)
当我像这样编写自定义操作 $resource 时:
getEntityResource(): ng.resource.IResourceClass<IEntityResource> {
let addAction: ng.resource.IActionDescriptor = {
method: 'POST',
url: 'http://localhost:8085/api/entity/add'
}
return <ng.resource.IResourceClass<IEntityResource>>
this.$resource("http://localhost:8085/api/entity/:entityId", { id: '@id' }, {
add: addAction,
});
并像这样从控制器中调用它:
this.$mdDialog.hide(this.dataService
.getEntityResource()
.add(this.entity,
() => this.$state.reload()
));
呼叫发送如下:
Request URL:http://localhost:8085/api/entity/add?id=0
webApi 操作接受实体对象作为参数而不是 id:
[HttpPost]
public Entity Add(Entity entity)
问题是它发送带有字符串参数 (?id=0) 而不是 JSON 对象的 post 请求。
我错过了什么?
谢谢。
看看$resource。
您的问题是,您将数据作为第二个参数传递。要将数据作为 JSON 对象传递,您必须执行以下操作:
$resource("http://localhost:8085/api/entity/:entityId",
{},
{params: {id: '@id'}...}
);
当我像这样编写自定义操作 $resource 时:
getEntityResource(): ng.resource.IResourceClass<IEntityResource> {
let addAction: ng.resource.IActionDescriptor = {
method: 'POST',
url: 'http://localhost:8085/api/entity/add'
}
return <ng.resource.IResourceClass<IEntityResource>>
this.$resource("http://localhost:8085/api/entity/:entityId", { id: '@id' }, {
add: addAction,
});
并像这样从控制器中调用它:
this.$mdDialog.hide(this.dataService
.getEntityResource()
.add(this.entity,
() => this.$state.reload()
));
呼叫发送如下:
Request URL:http://localhost:8085/api/entity/add?id=0
webApi 操作接受实体对象作为参数而不是 id:
[HttpPost]
public Entity Add(Entity entity)
问题是它发送带有字符串参数 (?id=0) 而不是 JSON 对象的 post 请求。
我错过了什么?
谢谢。
看看$resource。
您的问题是,您将数据作为第二个参数传递。要将数据作为 JSON 对象传递,您必须执行以下操作:
$resource("http://localhost:8085/api/entity/:entityId",
{},
{params: {id: '@id'}...}
);