Я использую Symfony 4 и Api Platform , пока отлично работает. Для реализации чего-либо на внешнем интерфейсе я использую jsonld.js , который выглядит как «официальная» библиотека для обработки ld+json
связанных действий, поскольку она напрямую связана с json-ld. орг .
Однако: GET /api/v1
возвращает это:
{
"@context": "/api/v1/contexts/Entrypoint",
"@id":"/api/v1",
"@type":"Entrypoint",
"story":"/api/v1/stories",
"author":"/api/v1/authors",
}
И пытается:
fetch('/api/v1')
.then(r => r.json())
.then(json => jsonld.expand(json))
.then(expanded => console.log(expanded))
Результат:
Ошибка: разыменование URL не привело к допустимому объекту JSON-LD. Возможные причины: недоступный URL-адрес, возможно, из-за политики одного и того же источника (убедитесь, что сервер использует CORS, если вы используете клиентский JavaScript), слишком много перенаправлений, ответ не в формате JSON или более одного заголовка HTTP-ссылки. удаленный контекст.
Изменение значения @context
на: http://localhost:8000/api/v1
и все работает, поэтому причиной ошибки являются относительные URL.
Вопрос:
Можно ли установить «базовый URL» на сервере или с помощью jsonld.js? Если да, то какое решение должно быть предпочтительным: сервер или клиент.