Как описать входной параметр в веб-сервисе RESTful
Я разрабатываю сервис RESTful, в котором процессы могут быть выполнены, и предоставляет результаты вычислений. Для этого я смоделировал сам процесс как ресурс (пример: / процессов / перевод). Я хочу выполнить этот процесс, отправив запрос GET с добавленным входным параметром в качестве параметра запроса (пример: /process /translate? Input1=xxxx&input2=xxxxx).
Каждый процесс имеет свой входной параметр, который определяется при создании процесса в бэкэнде. Мой вопрос заключается в том, как я должен документировать или описывать, какие входные данные необходимы для выполнения процесса в машиночитаемой форме. Например в XML.
До сих пор я интегрировал атом: связывал элементы в Представлении. я думал, что, возможно, включение XFORM может быть решением?
С наилучшими пожеланиями Андре
2 ответа
Я не стал бы моделировать это с помощью GET. Хотя это более простое решение, оно также (IMO) наименее RESTful. Я хотел бы, чтобы клиенты отправили POST документ, описывающий то, что они хотят, чтобы вы перевели, и ваша служба отправит им обратно URI, где их ответ может быть найден (некоторые переводы могут занять некоторое время).
Пример (без большого количества HTTP заголовков / контекста)
POST /processes/translate
Content-Type: application/xml
...
<translation-request>
<input1 type="type1">....</input1>
<input2 type="type5">....</input2>
</translation-request>
Отклик:
200 OK
Content-Location: /processes/translate/jobs/1234
....
Это всегда интересный вопрос. У нас есть проект под названием RESTx ( http://restx.org/), с помощью которого вы можете очень легко создавать веб-сервисы RESTful. Вы можете написать собственный код компонента на Java или Python, а затем создать ресурсы RESTful, отправив на сервер наборы параметров, которые затем будут сохранены. Каждый набор параметров получает свой собственный URI, поэтому вы всегда можете просто запустить код с этими параметрами, открыв URI нового набора параметров.
Важно отметить, что весь RESTful API создается автоматически. RESTx проверяет код компонента и затем собирает описание API. Мы решили описать параметры как для человека, так и для машиночитаемого. Вы можете увидеть примеры того, как это выглядит в браузере или в простом формате JSON.
Я ведущий разработчик, поэтому, пожалуйста, не стесняйтесь обращаться ко мне по любым вопросам, которые у вас могут возникнуть.