Как загрузить данные в таблицу ng из веб-службы REST, которые возвращают JSON

Я хочу загрузить свою таблицу из JSON, который возвращает мои веб-службы REST в SpringMVC, но я получаю следующую ошибку, в которой говорится, что мой метод rest не поддерживает метод GET.

URL-адрес, который сопоставил мой контроллер, - это

http://localhost:8080/MyApp/doc/showDocTable/

и URL меняется с этого на этот

http://localhost:8080/MyApp/doc/showDocTable/?count=10&page=1

Я не знаю, почему URL-адрес меняется на этот, поскольку я делаю только базовый пример с веб-сайта http://ng-table.com/#/loading/demo-external-array

Вот функция в моем контроллере, которая вызывает веб-сервисы

var Api = $resource('http://localhost:8080/MyApp/doc/showDocTable/');
            this.tableParams = new NgTableParams({}, {
                getData: function (params) {
                    // ajax request to api
                    return Api.get(params.url()).$promise.then(function (data) {
                        params.total(data.inlineCount); // recal. page nav controls
                        return data.results;
                    });
                }
            });

А вот мой метод контроллера в Spring MVC

@RequestMapping(value = "/doc/showDocTable/", method = RequestMethod.GET)
public ResponseEntity<List<HistDoc>> showTable() {
    List<HistDoc> listHistDoc = docDAO.getDocs();


    return new ResponseEntity<List<HistDoc>>(listaHistDoc, HttpStatus.OK);
}

И вот ошибка, которую я получаю в своем браузере

GET XHR  http://localhost:8080/MyApp/doc/showDocTable/?count=10&page=1 [HTTP/1.1 405 Request method &#39;GET&#39; not supported 6ms]

а тут ошибка в моей консоли

WARN    2016-08-11 12:46:58,206 [http-listener-1(4)] org.springframework.web.servlet.PageNotFound  - Request method 'GET' not supported

Я думаю, проблема в том, что ngTable каким-то образом изменяет URL-адрес на этот странный URL-адрес, и мой веб-метод в Spring не знает, что делать.

EDIT 1 Я удалил "/" из URL-адреса моего внутреннего метода, например: `@RequestMapping(value = "/doc/showDocTable", method = RequestMethod.GET) public ResponseEntity > showTable() { Список listHistDoc = docDAO.getDocs();

    return new ResponseEntity<List<HistDoc>>(listaHistDoc, HttpStatus.OK);
}`

а также я удалил "/" из метода getData в контроллере angularJs

var Api = $resource('http://localhost:8080/MyApp/doc/showDocTable');

Но теперь я получаю эту ошибку в консоли браузера Firefox.

Error: $resource:badcfg
Response does not match configured parameter

Error in resource configuration for action `get`. Expected response to contain an object but got an array (Request: GET http://localhost:8080/MyApp/doc/showDocTable)

EDIT 2: Вот мой HTML

<div class="col-lg-12" ng-controller="EstHistDoc as demo">

    <table ng-table="demo.tableParams" class="table table-bordered table-striped table-condensed">
        <tr ng-repeat="row in $data track by row.idDoc">
            <td data-title="'Name'" filter="{name: 'text'}" sortable="'name'">{{row.name}}</td>
            <td data-title="'Description'" filter="{description: 'text'}" sortable="'description'">{{row.description}}</td>
        </tr>
    </table>

and here is the JSON that I return from the backend

    [
   {
      "idHisReg":null,
      "idDoc":1,
      "name":doc one,
      "description:" "a description"
   },
   {
      "idHisReg":null,
      "idDoc":2,
      "name": doc two,
      "description:" "a seconddescription"
   }
]

person Bill_Data23    schedule 11.08.2016    source источник
comment
Это не проблема с URL-адресом, так как он добавляет только параметры запроса. Можете ли вы протестировать тот же URL-адрес с помощью такого приложения, как почтальон или Advanced Rest Client (плагин для Chrome)? Вы видите ответ json в инструментах разработчика?   -  person Skaparate    schedule 11.08.2016
comment
с URL-адресом все в порядке, поскольку я уже провел модульное тестирование этого метода, и если я получу доступ к этому URL-адресу (localhost: 8080/MyApp/doc/showDocTable) Я получаю ответ JSON просто отлично. Я протестировал его с помощью firebug, также я уже использую этот URL, но с другим плагином таблицы (angular-datatables), и я смог загрузить таблицу с помощью этот URL, но я хочу использовать ngTable сейчас, но я получаю эту ошибку   -  person Bill_Data23    schedule 11.08.2016
comment
Можете ли вы отлаживать / регистрировать запрошенный URL-адрес в бэкэнде? Я думаю, что ошибся в параметрах запроса, так как они могут быть проблемой. Но я считаю, что ваш сервер не поддерживает параметры запроса и, следовательно, не распознает конечную точку. Попробуйте увидеть, вызывается ли правильный метод. Если это не так, попробуйте добавить параметры в $resource(url, {page: '@page', count: '@count' })   -  person Skaparate    schedule 11.08.2016
comment
на какой URL вы ссылаетесь? тот с параметрами, потому что, когда я пытаюсь получить доступ к этому URL-адресу http://localhost:8080/MyApp/doc/showDocTable/?count=10&page=1 тот, у которого есть параметры, я получаю эту ошибку в своей консоли в моем бэкэнде WARN 2016-08-11 12:46:58,206 [http-listener-1(4)] org.springframework.web.servlet.PageNotFound - Request method 'GET' not supported   -  person Bill_Data23    schedule 11.08.2016
comment
Извините, да, я ссылался на него. Что если убрать косую черту в конце? Вот так: http://localhost:8080/MyApp/doc/showDocTable?count=10&page=1 Работает ли с ним бэкэнд?   -  person Skaparate    schedule 11.08.2016
comment
Я отредактировал свой вопрос, удалил /, но теперь получаю эту ошибку Ошибка: $resource:badcfg Ответ не соответствует настроенному параметру Ошибка в конфигурации ресурса для действия get. Ожидаемый ответ должен содержать объект, но получен массив   -  person Bill_Data23    schedule 11.08.2016
comment
Давайте продолжим обсуждение в чате.   -  person Bill_Data23    schedule 11.08.2016


Ответы (2)


Вы должны использовать $resource.query() (Api.query()) вместо $resource.get() (Api.get()).

person Skaparate    schedule 11.08.2016

Используйте Api.query(...) вместо использования Api.get(), чтобы решить вашу ошибку:

Ошибка в конфигурации ресурса для действия get. Ожидаемый ответ должен содержать объект, но получен массив (запрос: GET http://localhost:8080/MyApp/doc/showDocTable)

person colxi    schedule 11.08.2016