Какой код статуса HTTP должен использоваться для UPLOAD_ERR_PARTIAL?
Я разрабатываю REST API, и у меня есть загрузка файлов:
PHP может генерировать ошибку UPLOAD_ERR_PARTIAL
, когда файл был только частично загружен, и я не уверен, что код состояния HTTP следует использовать в этом случае.
Это обычно происходит, если пользователь отменяет загрузку (см. Почему файл может быть частично загружен и ошибки загрузки файлов на php.net)
UPLOAD_ERR_PARTIAL задается, когда граница mime не найдена после данных файла. Возможно, причиной этого является то, что загрузка была отменена пользователем (нажата ESC и т.д.).
Ответы
Ответ 1
Вы должны использовать код состояния 409 для этого случая.
Согласно http://www.ietf.org/rfc/rfc2616.txt:
Запрос не может быть выполнен из-за конфликта с текущим состояние ресурса. Этот код разрешен только в ситуациях, когда ожидается, что пользователь сможет разрешить конфликт
и повторно отправьте запрос. Тело ответа ДОЛЖНО включать достаточно информация для пользователя, чтобы распознать источник конфликта.
В идеальном случае объект ответа будет содержать достаточную информацию для пользователь или пользовательский агент для устранения проблемы; однако, это может быть не возможно и не требуется.
Ответ 2
Если загрузка пользователя не удалась из-за того, что что-то не так с тем, что они загружают, просто скажите: 400 Bad Request
Ответ 3
Вам не нужно отправлять код состояния, так как клиент уже отключен.
Ответ 4
Я бы пошел либо с 422 (запрос не мог быть выполнен из-за семантических ошибок), либо 449 (запрос должен быть повторен после выполнения действия).
Посмотрите httpstatuses.com.
Ответ 5
UPLOAD_ERR_PARTIAL задается, когда граница mime не найдена после данных файла.
411 Требуемая длина
В запросе не указана длина его содержимого, которое требуется запрашиваемому ресурсу
Ответ 6
409 - Конфликт
Код состояния 409 указывает, что сервер не смог выполнить запрос, часто потому, что файл нужно будет редактировать, создавать или удалять, и этот файл не может быть изменен, создан или удален.
Ответ 7
Я думаю, что заголовок должен основываться на контексте ошибок:
если загрузка файла не является допустимым типом:
- HTTP_415 = 'Неподдерживаемый тип носителя
если файл слишком большой:
- HTTP_413 = 'Request Entity Too Large'
если на сервере возникла проблема с загрузкой:
- HTTP_500 = 'Внутренняя ошибка сервера'
если время выгрузки:
- HTTP_504 = 'Тайм-аут шлюза'
но в целом, я бы сказал, что 500 довольно стандартный.
Ответ 8
Я бы использовал
408 Тайм-аут запроса.
Поскольку это указывает, что запрос был отправлен частично (что в данном случае не поддерживается)
400 Плохой запрос
выглядит как другой вариант.
Вы также можете создать свой собственный, используя не зарезервированный номер.
Но где вы отправляете ответ, если запрос отменен?