Какая операция REST (GET, PUT или POST) для проверки информации?

Мои пользователи вводят несколько информационных полей в приложении iOS. Эта информация должна быть проверена на моем сервере, у которой есть RESTful API. После проверки пользовательский интерфейс приложения iOS изменится, чтобы указать результат.

Ни GET, PUT, ни POST не подходят, потому что я не получаю ресурс, и ни один из них не создан или не обновлен.

Какая наилучшая подходящая операция REST для реализации этой проверки?

Ответ 1

Мои пользователи вводят несколько информационных полей в приложении iOS. Эта информация должен быть проверен на моем сервере, который имеет RESTful API. После проверка соответствия пользовательского интерфейса приложения iOS для указания результата.... Я не получая ресурс, и ни один из них не создан или не обновлен.

Поскольку вы ничего не сохраняете (не изменяя какой-либо ресурс), я думаю, что это технически больше RPC, чем RESTful для меня.

Следующее - мое мнение, поэтому не принимайте это как Евангелие:

Если информация просто отправляется, и вы говорите "да" или "нет", и вы не сохраняете ее, я бы сказал, что POST в порядке..

Если информация действительно была сохранена/обновлена ​​, выбор подходящего метода HTTP будет гораздо более актуальным.

POST = CREATE / SUBMIT (in an RPC context)
PUT = UPDATE (or CREATE if there is nothing to UPDATE)

Ответ 2

Я использую тот же сценарий, что и вы, и использую PUT для него. Вы должны спросить себя: "Когда я отправляю один и тот же запрос дважды, это делает другое состояние на сервере?" Если да, используйте POST, если не использовать PUT.

Ответ 3

Я рекомендую использовать ValidationResource и два запроса. Каждый экземпляр этого ресурса представляет собой проверку набора данных. Рабочий процесс:

1. Создайте новый ValidationResource

  • Запрос: POST /path/to/validations
    • данные для проверки как тела
  • Ответ: 201 Created
    • Location: /path/to/validations/<unique-id-of-this-validation>

2. Результат поиска

  • Запрос: GET /path/to/validations/<unique-id-of-this-validation>
  • Ответ: 200 OK
    • body: {'valid': true} или {'valid': false}

Это подход RESTful, в котором проверка является ресурсом с состоянием сервера.