Я пытаюсь решить, использовать ли мне PUT или POST для загрузки файлов с помощью ASP.NET WebAPI?
Я прочитал ответ, приведенный здесь PUT против POST для загрузки файлов RESTful API, который будет построен с использованием Zend Framework , который поддерживает POST для загрузки файлов, но в моем случае кажется, что оба могут быть законными, Я объясняю.
По сути, у меня есть API, который позволяет конечным пользователям отправлять презентацию, состоящую из нескольких слайдов, из углового приложения во внутреннюю службу, разработанную с помощью ASP.NET WebAPI, через интерфейс ниже:
POST: api/v1/presentations
PUT : api/v1/presentations/{presentationId}
GET : api/v1/presentations/{presentationId}
Хотя это работает очень хорошо, теперь мне нужно, чтобы пользователь мог прикреплять файлы к своим презентациям: максимум 1 документ на слайд и 2 видео (1 презентация, 1 фон) для всей презентации.
Файлы будут размещены в стороннем сервисе, и я в основном получу только один идентификатор, чтобы затем извлечь массив байтов, представляющих этот файл (с внешнего интерфейса мы на самом деле не хотим видеть идентификатор, предоставленный Сторонний сервис, поэтому мы хотели бы использовать идентификатор слайда / идентификатор презентации для получения наших файлов).
Файлы являются частью презентации с точки зрения внешнего интерфейса, но я не слишком уверен в этом.
В принципе, я мог бы придумать дизайн API ниже:
Примечание: видеоролики сторонней службы не должны быть удалены на данный момент (просто обновите новую версию и загрузите последнюю версию при GET
ting).
Что не является супер RESTful, другое решение заключается в следующем (учитывая только PUT
, а не POST
на этот раз):
Документы
PUT : api/v1/documents/{slideId}
GET : api/v1/documents/{slideId}
Видео
Фоновое видео:
PUT : api/v1/presentation-videos/{presentationId}
GET : api/v1/presentation-videos/{presentationId}
Презентационное видео:
PUT : api/v1/background-videos/{presentationId}
GET : api/v1/background-videos/{presentationId}
Но я не уверен, что это на самом деле лучше (в RESTful смысле).
Какой из них на самом деле лучше?