2016-09-23 2 views
4

Это вопрос о побочном эффекте на query with filtersЧто такое RESTful способ запроса с логической операцией?

Скажите, что мое приложение управляет объектами, называемыми workload, со следующими полями. Я хочу открыть интерфейс REST для пользователя, чтобы запросить рабочие нагрузки с помощью меток.

"Workload": {"id":"test1", "labels":["A", "B", "C"]} 
"Workload": {"id":"test2", "labels":["A", "C", "D"]} 
"Workload": {"id":"test3", "labels":["A", "B", "D"]} 

Вопрос: Как мне создать конечную точку REST так, что она будет поддерживать нагрузку запросов с основными логическими операциями?

Пример запрос 2: Я хочу, чтобы получить все рабочие нагрузки с меткой «A» или «B», но не «C»

Нет понятия, как сделать этот вид апите отдых на всех, кроме попросите пользователя запросить по A, B, C отдельно, а затем выполните сами операции с набором? (Какой большой пользовательский опыт ...)

A similar question here затрагивает запрос с булевой логикой на различных фильтров, но это, кажется, не применимо к многократному фильтра. (В этом случае наклейки. Кажется странным делать GET /workloads/labels:A/labels:B)

ответ

0

В зависимости от конкретных требований, возможно, я бы начал с подхода «google». Просто представьте форму запроса и создайте примитивный язык запросов, который может быть просто текстовым (нет необходимости использовать json, если он достаточно прост).

Так страница поиска будет выглядеть примерно так:

{ "searchForm": { 
    "target": "/workloads", 
    "method": "GET", 
    "components": [{ "name": "q" }] 
    } 
} 

media-type на странице поиска будет определять, как использовать форму, вероятно, что он должен сделать запрос как:

GET /workloads?q=+A+B-C 

Для языка запросов я бы выбрал абсолютный минимум. Может быть, только знаки «+» и «-», как и Google. Я бы, вероятно, остался с языком текстовых запросов, даже когда нужны более сложные запросы, просто чтобы было легко читать/тестировать вручную.

Или, если вы не хотите быть , что RESTful, вы можете запрограммировать запрос-uri в приложение, таким образом вам не нужно создавать страницу поиска своего медиа-типа.

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