Как получить объект JSON из ссылки с помощью Javascript Traverson HAL

#javascript #json #rest #spring-data #hateoas

Вопрос:

У меня есть следующий объект JSON:

 {

  "_embedded" : {

    "carPriceStreams" : [ {

      "carClassCurrency" : {

        "carClass" : {

          "carClass" : {

            "code" : "A542",

          },

          "_links" : {

            "car" : {

              "href" : "http://localhost:9001/api/car/2"

            }

          }

        },

        "creationDate" : "2015-07-01"

      },

      "_links" : {

        "self" : {

          "href" : "http://localhost:9001/api/carPriceStreams/1"

        },

        "carPriceStream" : {

          "href" : "http://localhost:9001/api/carPriceStreams/1"

        },

        "carPrices" : {

          "href" : "http://localhost:9001/api/carPriceStreams/1/carPrices"

        }

      }

    },...
 

Я использую библиотеку JavaScript Traverson и адаптер HAL для Traverson, чтобы получить объект:

 traverson.registerMediaType(TraversonJsonHalAdapter.mediaType, 
                     TraversonJsonHalAdapter);
var api = traverson
            .from(url   "/api")
            .jsonHal();
api
  .newRequest()
  .follow('carPriceStreams')
  .getResource(//...
 

Для каждого carPriceStream я хочу перейти по ссылкам на его автомобиль и получить этот ресурс автомобиля. Как я могу это сделать?

Я уже пробовал

 api
  .newRequest()
  .follow('carPriceStreams', 'car')
  .getResource(//...
 

Но я получаю HalLinkError .

Комментарии:

1. Считает ли траверсон встроенные элементы ссылками, по которым вы можете перейти?

2. Мое понимание, основанное на этом , — да.

Ответ №1:

Я не пользователь traverson, но ваш car объект не является прямым потомком carPriceStreams .

Ты можешь попробовать это ?

   .follow('carPriceStreams', 'carClassCurrency', 'carClass', 'car')