AngularJS 资源:仅在非空时发送查询参数

AngularJS resource: Send query parameter only if non-empty

我有一个 Angularjs 资源,在其中一种方法中,如果查询参数不为空,我想将查询参数发送到后端。是否可以在不创建不同方法的情况下实现这一目标?

示例资源方法:

get: {
      method: 'GET',
      url: /api/:token?source=:source,
      paramSerializer: someSerializer
    },

调用方法的代码是,

myResource.get({token: '1234'}, {source: <some source>});

令牌是必需的,但来源是可选的,因此有时不会将其传递给上面的调用。因此,如果为源提供了值,我希望能够发送源。如果未提供源值,我想根本不发送源。例如,如果源为空,调用将变为 /api/1234,如果源设置为 some_source.[=13,则调用将变为 /api/1234?source=some_source =]

使用上面的代码,如果源为空,当源为空时,我看到请求为“/api/1234?source=”。

如果您通过 get.params{} 传递查询参数,那么 AngularJS 将自动处理剥离未定义的属性。

简单定义 url 模板,不带额外参数:

get: {
      method: 'GET',
      url: "/api/:token",
    },

然后在调用动作时添加额外的参数:

myResource.get({token: '1234', source: <some source>});

额外的参数将作为查询参数自动添加到url。

来自文档:

Each key value in the parameter object is first bound to url template if present and then any excess keys are appended to the url search query after the ?.

有关详细信息,请参阅