Вариант № 1 в порядке, хотя, вероятно, излишний. Вариант № 1 не в порядке, поскольку он не идемпотентен.
Вариант № 2 - это идея BAD . Это было бы неправильно использовать PUT. PUT следует использовать в первую очередь, когда полезная нагрузка запрашиваемых данных представляет собой непрозрачный блок данных, обычно большой или иерархический. Меньшие, неиерархические полезные нагрузки имеют больше смысла как POST.
Также старайтесь избегать изменения состояния через параметры запроса. В этом нет ничего технически опасного, если это не запрос GET, но на самом деле это не RESTful.
В этом случае вам следует сделать следующее:
POST /players HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
name=Gretsky
Это должно вернуть 201 Created
ответ. (Существует исключение из этого: если вы не создаете ресурс сразу, и он может быть отклонен позднее, используйте вместо него 202 Accepted
.)
Написание веб-службы REST, использующей больше HTTP, чем POST и GET, следует выполнять только после , прочитав HTTP-спецификацию . (Это очень полезное чтение.) Это правило немного более утомительно, если вы используете платформу, которая принимает все решения за вас.