Разрешено ли тело объекта для запроса HTTP DELETE?

Если это домашнее задание, то все, что я могу сказать, это использовать String.split() и HashMap<String,Integer>.

(я вижу, вы уже нашли split (). линий.)

610
задан Haacked 18 November 2008 в 18:14
поделиться

3 ответа

спецификация явно не запрещает или препятствует ему, таким образом, я был бы склонен говорить, что это позволяется.

Microsoft видит его тот же путь (я могу услышать бормотание в аудитории), они заявляют в статье MSDN об эти , УДАЛЯЮТ Метод Платформы Услуг передачи данных ADO.NET :

, Если УДАЛИТЬ запрос включает тело объекта, тело проигнорировано [...]

Дополнительно, вот то, что RFC2616 (HTTP 1.1) должен сказать в отношении запросов:

  • тело объекта только присутствует, когда тело сообщения присутствует (разделите 7.2)
  • присутствие тело сообщения сообщено включением Content-Length, или Transfer-Encoding заголовок (разделите 4.3)
  • , тело сообщения не должно быть включено, когда спецификация метода запроса не позволяет отправлять тело объекта (разделите 4.3)
  • тело объекта явно запрещается в запросах ТРАССИРОВКИ только, все другие типы запроса неограниченны (разделите 9, и 9.8 конкретно)

Для ответов, это было определено:

  • , включено ли тело сообщения , зависит и от метода запроса и от состояние ответа (разделите 4.3)
  • тело сообщения явно запрещается в ответах НАПРАВИТЬСЯ, запросы (разделите 9, и 9.4 конкретно)
  • , тело сообщения явно запрещается в 1xx (информационное), 204 (никакое содержание), и 304 (не измененный) ответы (разделите 4.3)
  • , все другие ответы включают тело сообщения, хотя это может иметь нулевую длину (разделите 4.3)
496
ответ дан Matt G 18 November 2008 в 18:14
поделиться

Кажется мне, что RFC 2616 не определяет это.

раздел From 4.3:

присутствие тела сообщения в запросе сообщено включением Довольной Длины или Кодирования полей заголовков передачи в заголовках сообщения запроса. Тело сообщения не ДОЛЖНО быть включено в запрос, если спецификация метода запроса (разделяют 5.1.1) не позволяет отправлять тело объекта в запросах. Сервер ДОЛЖЕН считать и передать тело сообщения по любому запросу; если метод запроса не включает определенную семантику для тела объекта, то тело сообщения ДОЛЖНО быть проигнорировано при обрабатывании запроса.

И раздел 9.7:

УДАЛИТЬ метод запрашивает, чтобы сервер источника удалил ресурс, определенный URI запроса. Этот метод МОЖЕТ быть переопределен человеческим вмешательством (или другие средства) на сервере источника. Клиенту нельзя гарантировать это, операция была выполнена, даже если код статуса, возвращенный из сервера источника, указывает, что действие было завершено успешно. Однако сервер не ДОЛЖЕН указывать на успех, если, в то время, когда ответ не дан, это намеревается удалить ресурс или переместить его в недоступное местоположение.

А успешный ответ ДОЛЖЕН быть 200 (хорошо), если ответ включает объект, описывающий состояние, 202 (Принятый), если действие еще не было выполнено, или 204 (Никакое Содержание), если действие было выполнено, но ответ не включает объект.

, Если запрос проходит через кэш и URI запроса, определяет один или несколько в настоящее время кэшируемых объектов, те записи НУЖНО рассматривать как устаревшие. Ответы на этот метод не являются cacheable.c

, Таким образом, это явно не позволено или запрещено, и существует шанс, что прокси по пути мог бы удалить тело сообщения (хотя это ДОЛЖНО считать и передать его).

27
ответ дан Adam Rosenfield 18 November 2008 в 18:14
поделиться

В целом, вопрос такой сложности заключается в том, что нет строгого определения отклонения. Я бы рекомендовал не использовать определенное количество стандартных отклонений в качестве отсечки по следующим причинам:

  1. Несколько отклонений могут оказать огромное влияние на вашу оценку стандартного отклонения, поскольку стандартное отклонение не является надежной статистикой.
  2. Интерпретация стандартного отклонения в значительной степени зависит от распределения данных. Если данные распределены нормально, то 3 стандартных отклонения - это много, но если это, например, log-нормально распределено, то 3 стандартных отклонения - это не много.

Есть несколько хороших способов продолжить:

  1. Храните все данные и просто используйте надежную статистику (медиана вместо среднего, тест Уилкоксона вместо T-теста и т.д.). Вероятно, хорошо, если ваш набор данных большой.

  2. Обрезка или Winsorize данных. Обрезка означает удаление верхнего и нижнего x%. Winsorizing означает установку верхнего и нижнего x% на значение x-го и 1-x-го процентиля соответственно.

  3. Если у вас небольшой набор данных, вы можете просто построить график данных и проверить их вручную на наличие неправдоподобных значений.

  4. Если ваши данные выглядят достаточно близко к нормально распределенным (без тяжелых хвостов и примерно симметрично), то используйте медианное абсолютное отклонение вместо стандартного отклонения в качестве тестовой статистики и фильтруйте до 3 или 4 медианных абсолютных отклонений от медианы.

-121--2898878-

Пусть оптимизатор выполняет свою работу.

Серьезно. Не пытайтесь перехитрить оптимизатор. Он был разработан блестящими людьми с путем, путем большим опытом, чем вы.

-121--685203-

Некоторые версии Tomcat и Jetty игнорируют тело сущности, если оно присутствует. Что может быть неприятностью, если вы намереваетесь получить его.

53
ответ дан 22 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: