【问题标题】:ngResource appends POST parameters to urlngResource 将 POST 参数附加到 url
【发布时间】:2013-12-25 19:48:42
【问题描述】:

我有一个看起来像这样的角度服务。在这里,我正在发出 POST 请求。

.factory("Apples", function ($resource, HOST) {

            return $resource(
                HOST + "/apples",
                {},
                {
                    create: {
                        method: 'POST',
                        params: {
                            tree_id: '@treeId',
                            name: '@name',
                            color: '@color'
                        }
                    }
                }
            );
        })

问题是上述服务发出 POST 请求并将params 数据作为表单数据发送,但还将params 数据作为查询字符串附加到 url。我可以避免吗?

【问题讨论】:

  • 为什么不用$http发帖?
  • @MaximShoustin $resouce$http顶部抽象,用于简化 REST 并返回统一的查询(和操作)REST 接口。
  • 如果您不想要 URL 中的参数,请不要将它们配置为 url 参数。 $resource 将按原样发送实例数据(因此您的数据将是treeId,而不是tree_id
  • @KevinStone 那么我应该省略params 吗?如果是,那么我在哪里指定表单数据?

标签: angularjs ngresource


【解决方案1】:

我认为您对如何使用 $resource 感到矛盾。您应该像创建模型一样创建 $resource 实例,并在要发布的对象上设置属性。

您的Apples $resource 定义如上:

var apple = new Apples();

apple.color = ...
apple.name = ...
apple.tree_id = ...

apple.$create()

或者你可以直接使用 $resource 类:

Apples.create({
    apple.color: ...
    apple.name: ...
    apple.tree_id: ...
});

最后,$resource 具有使用 POST 的内置 $save(),您可以使用它来代替创建自定义 $create() 操作。

【讨论】:

    猜你喜欢
    • 2015-03-23
    • 2019-07-09
    • 2015-04-22
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2015-12-26
    • 2012-12-19
    相关资源
    最近更新 更多