Angularjs $ resource POST发送查询字符串而不是JSON对象(Typescript)

时间:2016-05-17 17:04:44

标签: angularjs typescript angular-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请求。

我错过了什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

看看$resource

您的问题是,您将数据作为第二个参数传递。要将数据作为JSON对象传递,您必须执行以下操作:

$resource("http://localhost:8085/api/entity/:entityId", 
     {},  
     {params: {id: '@id'}...}
);