2016-10-26 7 views
0

Если я следующий HTTP вызов моей апи на ресурсах/людей и вернутьReact.js HATEOAS клиент

{ 
    "_embedded": { 
    "people": [ 
     { 
     "id": 1, 
     "firstName": "John", 
     "lastName": "Doe", 
     "_links": { 
      "self": { 
      "href": "http://localhost:8080/person/1" 
      }, 
      "person": { 
      "href": "http://localhost:8080/person/1" 
      } 
     } 
     } 
    ] 
    }, 
    "_links": { 
    "self": { 
     "href": "http://localhost:8080/person" 
    } 
    } 
} 

Данные визуализируется на экране в виде таблицы и в настоящее время я выставить свои идентификаторы из моего внутреннего интерфейса и используйте следующую ссылку для моего react-router обрабатывать

<Link to={`person/${this.props.person.id}`}>Detail</Link> 

Здесь я не могу пройти по ссылке в оказанной ссылке и должен передать идентификатор, чтобы сделать вызов детали в моем внутреннем интерфейсе. Но вместо того, чтобы конструировать href вручную, я хочу использовать url на _links.self.href в моем следующем компоненте.

Как я могу достичь этого, не раскрывая идентификаторы в моем приложении React?

+0

'Я не могу передать его в качестве параметра, так как это ссылка. Можете ли вы рассказать об этом немного? Кроме того, как вы маршрутизируетесь? реагируют-маршрутизатор? –

+0

Вы были правы, было неясно, теперь лучше? – jgeerts

+0

Намного понятнее, спасибо. Но не будет '<Ссылка на = {' $ {this.props.person._links.self.href} '}> Подробно' делай, что хочешь? Я предполагаю, что 'person' является структурой из этого массива в вашем ответе API. –

ответ

0

Задайте вопрос по этому вопросу here.

При использовании ссылки:

<Link to={{pathname: "/person", state: { person: person }}} /> 

И в ссылочном компоненте:

this.props.location.state.person 
0

Ваш вопрос почти идентичен примеру я даю в моем ответ на этот вопрос: https://stackoverflow.com/a/18083285/760706

Основная проблема, которую я хотел бы взять с представленным вами, заключается в том, что ресурс, который вы включили в раздел _embedded ()) не входит в ссылки ресурса коллекции, основной раздел _links. Вместо этого вы перечислили его рядом с self в пределах собственных ссылок.

Вторая проблема, которую я вижу, заключается в том, что отношение ссылок, которое вы использовали, «люди» (которые фактически связаны с отдельным человеком), не является URI или не зарегистрированным в IANA списком связей ссылок. Это только два правовых типа связи. В этом случае ваша коллекция должна использовать зарегистрированное отношение item, чтобы указать на его членов. Для пользовательских отношений ваш URI должен быть URL-адресом HTTP в домене, который вы контролируете, указывая на документацию, чтобы пользователи могли искать документацию для этого отношения ссылок, перейдя по URL-адресу.

Смежные вопросы