Я думаю, что должно быть довольно просто использовать URI для представления вашей иерархической структуры данных.Хотя URI не подразумевают строго иерархию (некоторым людям нравится сохранять полностью непрозрачными), значимые URI имеют естественное иерархическое представление, и они должны красиво отображаться в вашем примере файла / папки.
В системе RESTful,ресурсы имеют общий интерфейс, который (в вашем случае) определяется глаголами HTTP.URI идентифицирует ресурс, а REST указывает, что его нельзя использовать для указания операции, которую вы пытаетесь выполнить.
Поэтому вместо
GET /rest/path/to/folder:list HTTP/1.1
Iпредложил бы, чтобы список содержимого папки (узнать ее состояние) вы просто используете:
GET /rest/path/to/folder HTTP/1.1
Это должно вернуть список URI, которые представляют файлы и подпапки, которыеэта папка содержит.Затем, чтобы получить содержимое одного из файлов, я мог бы затем вызвать:
GET /rest/path/to/folder/myfile HTTP/1.1
Переименование немного сложнее.В некоторых случаях DELETE
, за которым следует PUT
, будет работать, но я предполагаю, что вы хотите сохранить содержимое папки без необходимости повторной загрузки.Одним из вариантов является PUT
, где тело содержит новый путь к папке, который отвечает 204 и значением заголовка Location, указывающим на вновь созданную папку (как описано в «Переименовании тега» здесь ).Необязательно: Если вы хотите быть по-настоящему дружелюбным по отношению к своим пользователям, вы также можете вернуть статус 301 (навсегда перенесенный) со ссылкой на новый URI, если кто-либо сделает запрос на старый URI.
ЗапомнитеПуть - это только одно из свойств, определяющих состояние папки, вы можете обновить это состояние с помощью PUT
, не вводя пользовательскую операцию переименования.В вашем случае вы используете путь для определения вашего URI, но вполне допустимо, чтобы изменение состояния вызывало изменение URI.