Обновление 1 9. июля 2020: Как минимум два выпуска. Извините, я не могу заставить редактор правильно отформатировать текст.
Имена полей должны содержать поля. префикс.
QueryBuilder queryBuilder = QueryBuilder.New.FieldExists ("fields.myurl", true) .FieldEquals ("fields.myurl", "/");
Кажется необходимым перебрать типы содержимого.
https://cdn.contentful.com/spaces/qjiunow8a0ig/entries?fields.myurl [exists] = true & fields.myurl =% 2F
Необработанное исключение. Contentful.Core.Errors.ContentfulException: требуется идентификатор типа контента. При запросе записей и включении полей вам необходимо ограничить свой запрос конкретным типом содержимого c. Отправьте идентификатор типа контента (не имя) в качестве параметра запроса URI «content_type» в строке Contentful.Core.ContentfulClientBase.CreateExceptionForFailedRequest (HttpResponseMessage res) в C: \ temp \ deliverystack \ Contentful.Core \ ContentfulClientBase.cs: 142 в Contentful.Core.ContentfulClientBase.EnsureSuccessfulResult (ответ HttpResponseMessage) в C: \ temp \ deliverystack \ Contentful.Core \ ContentfulClientBase.cs: строка 320 в Contentful.Core.ContentfulClientTase.SendHttpRequest (запрос HttpRequest) 1059 *: \ temp \ deliverystack \ Contentful.Core \ ContentfulClientBase.cs: строка 264 в Contentful.Core.ContentfulClientBase.SendHttpRequest (строковый URL, метод HttpMethod, String authToken, CancellationToken cancellationTokaders, HttpContent * 1020, дополнительный контент Null C: \ temp \ deliverystack \ Contentful.Core \ ContentfulClientBase.cs: строка 257 в Contentful.Core.ContentfulClient.Get (String url, CancellationToken cancellationToken) в C: \ temp \ deliverystack \ Contentful.Core \ ContentfulClient.cs: строка 654 в Contentful.Core.ContentfulClient.GetEntries [T] (String queryString, CancellationToken cancellationToken) в C: \ temp \ deliverystack \ Contentful. Core \ ContentfulClient.cs: строка 188 в Contentful.Core.ContentfulClient.GetEntries [T] (QueryBuilder`1 queryBuilder, CancellationToken cancellationToken) в C: \ temp \ deliverystack \ Contentful.Core \ ContentfulClient.cs: строка 171 в cfclt .Program.Main (String [] args) в C: \ temp \ deliverystack \ cfclt \ Program.cs: строка 33
Итак, это работает:
QueryBuilder<Entry> queryBuilder = QueryBuilder<Entry>.New.ContentTypeIs("firstContentType").FieldExists("fields.url", true).FieldEquals("fields.url", "/");
Думаю, я буду перебирать типы контента и создавать потоки для запроса.
Исходный поток:
Я хотел бы использовать Contentful. NET SDK (https://www.contentful.com/developers/docs/net/) для реализации уровня доставки контента для веб-приложения.
Одна из моих первых проблем - как сопоставить входящий HTTP-запрос с записью в Contentful без сохранения каких-либо соответствующих конфигурация в уровень доставки контента. Я хочу передать URL-адрес, и SDK вернет гидратированный объект соответствующего типа.
*
Я помещаю текстовое поле с именем URL в свои записи, которые должны иметь URL-адреса. Я хочу запросить все типы контента, чтобы найти любые записи, которые имеют значение c в этом поле URL.
Я пробовал несколько запросов, но всегда получаю исключения:
QueryBuilder<Entry> queryBuilder = QueryBuilder<Entry>.New.ContentTypeIs("firstContentType").FieldExists("url", true).FieldEquals("url", "/");
ContentfulCollection<Entry> entries = client.GetEntries(queryBuilder).GetAwaiter().GetResult();
Unhandled exception. Contentful.Core.Errors.ContentfulException: The query you sent was invalid. Probably a filter or ordering specification is not applicable to the type of a field.[
{
"name": "unknown",
"path": [
"url"
],
"details": "The path \"url\" is not recognized"
}
]
at Contentful.Core.ContentfulClientBase.CreateExceptionForFailedRequest(HttpResponseMessage res) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 142
at Contentful.Core.ContentfulClientBase.EnsureSuccessfulResult(HttpResponseMessage response) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 320
at Contentful.Core.ContentfulClientBase.SendHttpRequest(HttpRequestMessage request, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 264
at Contentful.Core.ContentfulClientBase.SendHttpRequest(String url, HttpMethod method, String authToken, CancellationToken cancellationToken, HttpContent content, Nullable`1 version, String contentTypeId, String organisationId, List`1 additionalHeaders) in C:\temp\deliverystack\Contentful.Core\ContentfulClientBase.cs:line 257
at Contentful.Core.ContentfulClient.Get(String url, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 654
at Contentful.Core.ContentfulClient.GetEntries[T](String queryString, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 188
at Contentful.Core.ContentfulClient.GetEntries[T](QueryBuilder`1 queryBuilder, CancellationToken cancellationToken) in C:\temp\deliverystack\Contentful.Core\ContentfulClient.cs:line 171
Я относительно уверен, что есть запись firstContentType со значением / в поле URL. Что я делаю не так?
Почему / как может быть так сложно сделать что-то такое базовое c с безголовой CMS? Посмотри это; это похоже на кроличью нору, которую у меня нет времени исследовать. Не уверен, что это того стоит, если запрос все равно не работает?