AngularJs $resource、REST 和 Symfony2 FOSRestBundle

AngularJs $resource, REST and Symfony2 FOSRestBundle

我正在使用 FOSRestBundle,这个包为我生成路由并将这些路由复数化。例如,对 /users.json 的 GET 请求不同于对 /user/15.json 的 GET 请求

值得注意的是,调用 /users/15。json 失败。

这里有更多关于这个问题的信息https://github.com/FriendsOfSymfony/FOSRestBundle/issues/247

在我的 Angular 应用程序中,我使用 $resource 创建一个 RESTful 调用,URL 是一个模板,详见此处 https://docs.angularjs.org/api/ngResource/service/$resource

例如

$resource('http://example.com/:id.json')

$resource('http://example.com/user/:id.json')

这就是问题所在,$resource 似乎只接受一个 URL REST 资源模板,但由于 FOSRestBundle 的强制复数化,我有多个模板。

我不认为破解 FOSRestBundle 是解决问题的方法,所以我可以如何使用 AngularJs 中的 $resource 来纠正这个问题?

您可以为每个方法设置 url 作为第三个参数 - actions

angular.module("example", ["ngResource"])
  .factory("userService", function($resource) {
    return $resource("http://example.com/user/:id.json", {
      id: "@id"
    }, {
      'query': {
        url: "http://example.com/users"
      }
    })
  })
  .run(function(userService) {
    userService.query();

    userService.get({id:1});
  })