Пытаюсь выяснить это уже целый день. Я пытаюсь использовать API fiken.no для получения номеров клиентов. API основан на HAL + JSON, и я хочу получить доступ к данным с помощью PHP.
При создании новой учетной записи вы не получаете ответа, а только HTTP 201, поэтому, чтобы получить сгенерированный номер клиента, мне нужно использовать конечную точку поиска.
Эта конечная точка возвращает только всех пользователей, как это:
{
"_links": {
"self": {
"href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts"}
},
"_embedded": {
"https://fiken.no/api/v1/rel/contacts": [
{
"_links": {
"self": {
"href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/757941482"}
},
"name": "Ola Nordmann 2",
"email": "[email protected]",
"address": {
"country": "Norge"},
"customerNumber": 10003
},
{
"_links": {
"self": {
"href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/757941171"}
},
"name": "Ola Nordmann 1",
"email": "[email protected]",
"address": {
"country": "Norge"},
"customerNumber": 10002
},
{
"_links": {
"self": {
"href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/756867201"}
},
"name": "Demoleverandør",
"address": {
"address1": "Demoveien 44",
"address2": "",
"postalPlace": "Oslo",
"postalCode": "0190",
"country": "Norge"},
"supplierNumber": 20001
},
{
"_links": {
"self": {
"href": "https://fiken.no/api/v1/companies/fiken-demo-personlig-gnist-enk/contacts/756867200"}
},
"name": "Demokunde",
"address": {
"address1": "Demoveien 22",
"address2": "",
"postalPlace": "Oslo",
"postalCode": "0190",
"country": "Norge"},
"customerNumber": 10001
}
]
}}
Из этого ответа мне нужно запросить f.ex электронную почту [email protected] и получить от нее весь объект пользователя. Это включает в себя данные адреса и особенно номер клиента. Как бы я пошел вперед, чтобы сделать это?
Я нашел это: Поиск ключа в Json (вложенный массив) PHP это похоже на мои проблемы, но здесь ключ является постоянным в массиве json. Здесь это от 0 и до бесконечности.
Есть ли лучший способ обработать это с помощью PHP, чем обычные практики JSON?
Спасибо за любую помощь!
Первым делом будет декодировать JSON в массив:
$resultArray = json_decode($yourJSONvariable, true);
Далее я бы порекомендовал выделить массив контактов из массива JSON:
$contacts = $resultArray["_embedded"]["https://fiken.no/api/v1/rel/contacts"];
Сейчас $contacts
должен быть массив всех контактов из вызова API. Вы можете просмотреть каждую из них, чтобы найти запись с соответствующим адресом электронной почты, например:
foreach ($contacts as $contact) {
if ($contact["email"] == "[email protected]") {
$mycontact = $contact;
break;
}
}
$mycontact
теперь будет содержать массив контактов с соответствующим адресом электронной почты, и вы можете получить доступ к его отдельным полям, используя имена полей в качестве индекса массива (например, $mycontact["name"]
, $mycontact["address"]["country"]
, $mycontact["_links"]["self"]["href"]
). Чтобы увидеть все данные в массиве, сделайте var_dump($contacts)
Других решений пока нет …