Кратко
- 207 фиксирует строки, возвращённые при конкретных грамматике, арбитре, области и principal. Он не доказывает проверку каждого ресурса.
- Усечённый ответ может содержать любое подходящее подмножество. Сортировка упорядочивает видимое, но не гарантирует глобальные первые позиции.
Красивый список скрывает остановку вычисления
Сотня отсортированных записей похожа на завершённый каталог. RFC 5323 позволяет серверу ограничить затраты обработки или передачи. Многие подходящие ресурсы могут остаться непроверенными.
Ответ остаётся 207 Multi-Status. Для URI поискового арбитра указывается 507, и желательно включить частичные результаты. Эти записи могут быть любым подмножеством полного совпадения. При запрошенном порядке они сортируются, но не обязаны быть глобально лучшими.
Промежуточный преобразователь, удаливший 507 и сохранивший строки, уничтожает свидетельство неполноты. Достоверность отдельных href не восстанавливает смысл конверта.
DAV:limit просит предел количества или усилий, но сервер может его игнорировать. При порядке и пределе предпочтительны верхние элементы. Запрос клиента, фактический бюджет и серверное усечение фиксируются отдельно.
Арбитр принимает вопрос, область задаёт население
SEARCH переносит запрос; грамматика задаёт смысл. Request-URI именует search arbiter и не обязана совпадать с областью поиска.
DAV:from определяет scope через href и depth. Ноль охватывает коллекцию, один — прямых детей, infinity — потомков. Относительная ссылка разрешается относительно Request-URI; абсолютная может указывать другое место в пределах возможностей сервера.
Поддержка нескольких областей необязательна. При её отсутствии запрос должен завершиться ошибкой. Redirect-ссылки также не следуются автоматически. Infinity в тексте запроса не является квитанцией обхода каждого логического пути.
Условие без сохранённых арбитра и разрешённой области нельзя воспроизвести. Подмена области Request-URI меняет популяцию и смысл результата.
UNKNOWN не равен FALSE
Предикаты дают TRUE, FALSE или UNKNOWN. Только TRUE включает ресурс. Отсутствующая строка может означать, что ответ определить не удалось.
Свойство считается NULL, если PROPFIND вернул бы non-2xx. NULL отличается от пустой строки: пустая строка является определённым значением. Нечитаемое свойство оценивается как отсутствующее, нечитаемый контент — как неудачный GET.
SEARCH не должен раскрывать то, чего principal не получил бы через GET или PROPFIND. Одинаковый XML от разных principals способен законно вернуть разные строки.
Отсутствие объясняют FALSE, UNKNOWN, права, scope, усечение, redirect, возраст индекса или изменение коллекции. Нельзя автоматически выбрать «не существует».
Объявленная грамматика не доказывает запуск
DASL и DAV:supported-query-grammar-set сообщают поддерживаемые языки. Это не квитанция выполнения. Query Schema Discovery может описать searchable, selectable, sortable свойства и операторы, но остаётся необязательным.
Schema зависит от арбитра и области, а также может зависеть от principal без полного раскрытия факторов. Searchable означает готовность проверить, а не наличие свойства у каждой записи.
URI грамматики — идентификатор, который не следует загружать только из-за вида HTTP. Score тоже локален: значения разных запусков обычно сравнимы лишь при том же движке и той же коллекции.
Возможность, выполнение и результат требуют разных подтверждений. OPTIONS не подтверждает полноту индекса, schema — свежесть, score — объективную важность.
Одна href не всегда означает один объект
Несколько URI в области могут отображать один ресурс. Серверу следует вернуть один. DAV:resource-id помогает заметить возможное дублирование, не делая выбранную href вечным именем.
Число строк не всегда равно числу объектов. Сохраняйте href, resource-id, propstat, арбитр и время. Дедупликация остаётся отдельным выводом.
Успешный результат не рекомендуется кэшировать. Коллекции, права, свойства и индексы меняются. SEARCH — временное наблюдение, не замороженный снимок.
Полный журнал одной поисковой операции
Сохраняйте XML, грамматику, Request-URI, разрешённые scope, depth, параметры redirect и version, principal, авторизацию, select, дерево условий, порядок и limit. С ответом сохраняйте 207, все response и propstat, href, resource-id, score, 507 и эпоху индекса.
Не называйте строки полным списком без отдельного перечисления. Не заменяйте отсутствие на FALSE, пока возможны UNKNOWN, права, область или усечение. Не сравнивайте scores между системами и не считайте discovery выполнением.
Наблюдайте постоянный потолок, потерянный 507, изменение schema, разницу с авторизованным PROPFIND, одинаковые ID за разными href и внешние XML-сущности. Дорогая выборка создаёт и DoS-риск.
RFC 5323 даёт сильный способ задавать вопросы рядом с данными. Но индекс отвечает только за то, что вычислил в данном контексте. Его строки полезны; его молчание требует дополнительных свидетельств.
Источники
- RFC 5323 HTML
- RFC 5323 текст
- Сведения RFC Editor
- IETF Datatracker
- История Datatracker
- Ссылки из RFC 5323
- Документы со ссылкой на RFC 5323
- Исправления RFC 5323
- RFC 4918
- RFC 2518
- RFC 3253
- RFC 3744
- RFC 4437
- RFC 3986
- RFC 9110
- Реестр методов HTTP IANA
- RFC 2119
- Heng Lu: слои реальности
- Heng Lu: приоритет работающего кода
- Heng Lu: проблема агентских отношений
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
