То, о чем вы говорите, - это преобразование без сохранения состояния представления запроса (список чисел) в представление ответа (один номер).
Давайте классифицируем ваш ресурс:
- Без сохранения состояния. Запрос не имеет состояния, как и ресурс. Он должен иметь возможность принимать ваш запрос, обрабатывать его и возвращать ответ без сохранения какого-либо внутреннего состояния. Дальнейшее обсуждение ниже.
- Маловероятно, что их можно кэшировать - здесь я делаю предположение, что ваши списки чисел никогда/редко не совпадают.
- Идемпотент — запросы не имеют побочных эффектов. Это связано с тем, что ресурс не имеет состояния.
Теперь давайте рассмотрим различные методы HTTP:
- GET — получает состояние ресурса. Поскольку ваш ресурс не имеет состояния, он не подходит для вашей ситуации. (идемпотентный, кэшируемый)
- DELETE — удаляет ресурс или очищает его состояние. Также не подходит для вашей ситуации. (не идемпотентный, не кешируемый)
- PUT — используется для установки состояния ресурса (или его создания, если он не существует). (идемпотентный, не кэшируемый)
- POST — используется для обработки запросов, которые могут изменить или не изменить состояние ресурса. Может создавать другие ресурсы. (нет гарантии идемпотентности - зависит от того, является ли ресурс с сохранением состояния или без состояния, а не кэшируемым)
Как вы видите в других ответах, POST чаще всего используется как синоним слова «создать». Хотя это нормально, POST не ограничивается просто «созданием» в REST. Марк Бейкер хорошо объясняет это здесь: http://www.markbaker.ca/2001/09/draft-baker-http-resource-state-model-01.txt (раздел 3.1.4).
Хотя POST не имеет идеального семантического сопоставления с вашей проблемой, это лучший из всех методов HTTP для того, что вы пытаетесь сделать. Это также приводит к простому, не сохраняющему состояние и масштабируемому решению, которое является точкой REST.
В общем, ответ на ваш вопрос:
- Метод: ПОСТ
- Запрос: представление списка чисел
- Ответ: Представление одного числа (среднее значение списка)
Хотя это может выглядеть как вызов веб-службы в стиле SOAP, это не так. Не позволяйте своей внутренней реакции на SOAP омрачать использование метода POST и накладывать на него ненужные ограничения.
ПОЦЕЛУЙ (Будь проще, глупый).
person
user11087
schedule
17.01.2009