AngularJs $ resource, REST и Symfony2 FOSRestBundle

0

Я использую FOSRestBundle, этот комплект генерирует маршруты для меня и плюрализует эти маршруты. Например, запрос GET для /users.json отличается от запроса GET на /user/15.json

Стоит отметить, что вызов /sers/15.json не выполняется.

Подробнее об этой проблеме здесь https://github.com/FriendsOfSymfony/FOSRestBundle/issues/247

В моем приложении "Угловое" я использую $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 - это ответ, так что я могу сделать с моим использованием $resource в AngularJs, чтобы исправить эту проблему?

  • 1
    Вы можете делать с $ resource все, что захотите, например: $ resource (' example.com/:mode:id.json ', {id: '@id'}, запрос: {method: 'GET', params: {mode : 'users', id: ''}, isArray: true}),
  • 0
    @PetrAveryanov, но мой режим по-прежнему должен быть установлен для каждого запроса, в зависимости от того, является ли он для одного объекта или нескольких объектов. Просто установка mode для users не помогает - мне нужно динамически установить его как - то в зависимости от требований запроса.
Показать ещё 1 комментарий
Теги:
fosrestbundle

1 ответ

1
Лучший ответ

вы можете установить URL для каждого метода в качестве третьего параметра - действия

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});
  })
  • 0
    Спасибо за это, это полезно знать. Но, кажется, это так тяжело и ненужно, учитывая все величие, которое обеспечивают эти две системы.
  • 0
    Это очень помогло теперь, когда я попробовал это и изменил мои маршруты немного. Но что делает эта часть - id: "@id" - при ее удалении мой код все еще работает?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню