TL; DR - используйте PUT /files/{id}
с содержимым в теле.
От чего это зависит - что является (уникальным для вашей системы) идентификатором File
?Здесь я предполагаю, что это Id
, переданный клиентом, и что Path
- это просто метаданные.Если путь также является частью идентификатора, вам необходимо соответствующим образом изменить его.
Поскольку клиент предоставляет и определяет идентификатор, вы, вероятно, предпочтете PUT
к POST
и укажите личность на пути;например, PUT /files/{id}
с путем и содержанием в теле.Последующее идентичное PUT
оставляет систему в идентичном состоянии, поэтому оно удовлетворяет требованию, что PUT
является идемпотентом для наблюдателей.Последующее неидентичное PUT
обновляет существующее содержимое.
Спецификация HTTP обеспечивает некоторую гибкость, поэтому вы можете использовать POST
. последний немного изменил определение POST
(для более широкого применения), но в оригинал (выделение мое) ...
Метод POST используется для запроса, чтобы исходный сервер принял объект, заключенный в запросе, в качестве нового подчиненного ресурса, идентифицируемого Request-URI в строке запроса.
... было яснее, что POST /files
имеет смысл создавать, например, файл в каталоге (их пример), но POST /files/{id}
имеет меньше смысла.
Это обсуждение есть еще немного на PUT против POST.Там также утверждается, что:
Обратите внимание, что следующее является ошибкой:
POST /questions/<new_question> HTTP/1.1
Host: www.example.com/
Если URL еще не создан, вам не следует использовать POST для его создания, покауказав имя.Это должно привести к ошибке «ресурс не найден», потому что еще не существует.Сначала вы должны поместить ресурс на сервер.