Как выразить допустимые значения в шаблоне URI

Я работаю над REST API и ищу способ предоставить клиенту допустимые значения для переменной в шаблоне URI. Это полезно, когда переменная представляет что-то вроде перечисления. В настоящее время клиент возвращает набор ссылок как часть возвращаемого ему объекта JSON, и я хотел бы сделать что-то вроде этого:

"Links":
[
    {
        "Title":"Search Articles",
        "HREF":"example.com/articles/search?keywords={keywords}&mode={mode|["allWords", "anyWords", "exactPhrase"]}"
    }
]

или это:

"Links":
[
    {
        "Title":"Search Articles",
        "HREF":"example.com/articles/search?keywords={keywords}&mode={mode}"
        "Fields":
        [
            {
                "Name":"keywords",
                "Type":"Text"
            },
            {
                "Name":"mode", 
                "Type":"Enum", 
                "Options":["allWords", "anyWords", "exactPhrase"]
            }
        ]
    }
]

Это самое близкое к ответу, что я нашел, но я надеялся на что-то более официальное.

Я также просматривал документ стандартов IETF для шаблонов URI, который кажется довольно официальным, но не похоже, что у него есть ответ на эту проблему.


person Kestrel12    schedule 20.02.2014    source источник


Ответы (1)


Похоже, я собираюсь использовать JSON Hyper-Schema. Как было предложено в этом ответе, вы можете выполнить то, что мне нужно, используя определяемый ими элемент Properties.

Я также просмотрел HAL, Collection+JSON, и Сирена, но я предпочитаю гиперсхему JSON, поскольку она использует набор ссылок, а не придумывает что-то новое.

person Kestrel12    schedule 21.02.2014