При использовании POST и когда делают Вы используете, ДОБИРАЮТСЯ?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
327
задан NightFury 17 January 2015 в 10:23
поделиться

24 ответа

Используйте POST для разрушительных действий, таких как создание (я знаю об иронии), редактирование и удаление, потому что Вы не можете совершить нападки POST действие в строке поиска Вашего браузера. Используйте GET, когда будет безопасно позволить человеку называть действие. Так URL как:

http://myblog.org/admin/posts/delete/357

Должен принести Вам к странице подтверждения, вместо того, чтобы просто удалить объект. Намного легче избежать несчастных случаев этот путь.

POST также более безопасно, чем GET, потому что Вы не засовываете информацию в URL. И таким образом использование GET как method для HTML-формы, которая собирает пароль или другую уязвимую информацию, не является лучшей идеей.

Одно заключительное примечание: POST может передать больший объем информации, чем GET. 'POST' не имеет никаких ограничений размера для переданных данных, пока 'ДОБИРАЮТСЯ', ограничен 2 048 символами.

362
ответ дан vs97 23 November 2019 в 00:49
поделиться

Исходное намерение было, это ДОБИРАЕТСЯ, использовался для возвращения данных, и POST должен был быть чем-либо. Эмпирическое правило, которое я использую, - то, что, если я передаю что-нибудь обратно серверу, я использую POST. Если я просто называю URL для возвращения данных, я использую, ДОБИРАЮТСЯ.

1
ответ дан Chris Miller 23 November 2019 в 00:49
поделиться

Gorgapor, mod_rewrite все еще часто использует GET. Это просто позволяет переводить более дружественный URL в URL с GET строка запроса.

0
ответ дан atiquratik 23 November 2019 в 00:49
поделиться

Я использую POST, когда я не хочу, чтобы люди видели QueryString или когда QueryString становится крупным. Кроме того, POST необходим для загрузок файла.

я не вижу, что проблема использовать ДОБИРАЕТСЯ, хотя, я использую ее для простых вещей, где имеет смысл сохранять вещи на QueryString.

Используя ДОБИРАЮТСЯ, позволит связываться с конкретной страницей, возможной также, где POST не работал бы.

2
ответ дан Gajendra K Chauhan 23 November 2019 в 00:49
поделиться

Это пересекает в понятие REST и как сеть была отчасти предназначена, используясь. Существует превосходное подкаст по радио Разработки программного обеспечения, которое дает подробно, разговор об использовании Добирается и Сообщение.

Добираются, используется для получения по запросу данных из сервера, где действие обновления не должно быть необходимо. Идея, которая быть - то, что необходимо быть в состоянии использовать то же, ПОЛУЧАЕТ запрос много раз и возвратила ту же информацию. URL имеет получить информацию в строке запроса, потому что это было предназначено, чтобы быть в состоянии быть легко отправленным в другие системы и людей как адрес на том, где найти что-то.

Сообщение, как предполагается, используется (по крайней мере, остальными архитектура, которая сеть отчасти на основе) для продвижения информации к серверу/сообщению сервер для выполнения действия. Примеры как: Обновите эти данные, Создайте эту запись.

4
ответ дан MrBoJangles 23 November 2019 в 00:49
поделиться

Поскольку ДОБИРАЕТСЯ, просто URL, они могут кэшироваться веб-браузером и могут лучше использоваться для вещей как последовательно сгенерированные изображения. (Установите время Истечения)

Один пример от страницы граватара: http://www.gravatar.com/avatar/4c3be63a4c2f539b013787725dfce802?d=monsterid

ДОБИРАЕТСЯ, может привести к незначительно лучшей производительности, некоторые веб-серверы пишут содержание POST во временный файл прежде, чем вызвать обработчик.

Другой вещью рассмотреть является предел размера. ДОБИРАЕТСЯ ограничиваются размером URL, 1 024 байта по стандарту, хотя браузеры могут поддерживать больше.

Передача большего количества данных, чем это должна использовать POST для получения лучшей совместимости браузера.

Еще меньше, чем тот предел являются проблемой, как другой плакат записал, что-либо в URL могло закончиться в других частях UI brower, как история.

5
ответ дан davenpcj 23 November 2019 в 00:49
поделиться

Используйте ДОБИРАЮТСЯ, когда Вы хотите, чтобы URL отразил состояние страницы. Это полезно для просматривания динамично сгенерированных страниц, таких как замеченные здесь. POST должен использоваться в форме для представления данных, как то, когда я нажимаю кнопку "Post Your Answer". Это также производит более чистый URL, так как это не генерирует строку параметров после пути.

7
ответ дан Kyle Cronin 23 November 2019 в 00:49
поделиться

Используйте ДОБИРАЮТСЯ, если Вы не возражаете против повторяемого запроса (Который является им, не изменяет состояние).

POST Использования, если операция действительно изменяет состояние системы.

76
ответ дан Douglas Leeder 23 November 2019 в 00:49
поделиться

Мое общее правило ползунка состоит в том, чтобы использовать, Добираются, когда Вы выполняете запросы к серверу, которые не собираются изменять состояние. Сообщения резервируются для запросов к серверу, которые изменяют состояние.

8
ответ дан TonyLa 23 November 2019 в 00:49
поделиться

В резюме

  • Использование GET для safe and idempotent запросы
  • Использование POST для neither safe nor idempotent запросы
<час>

В деталях существует надлежащее место для каждого. Даже если Вы не следуете УСПОКОИТЕЛЬНЫЙ принципы, много может быть получено от приобретения знаний о REST и как ресурс ориентировал работы подхода.

А УСПОКОИТЕЛЬНОЕ приложение будет use GETs для операций, которые являются оба safe and idempotent.

А safe операция является операцией, которая делает not change the data требуемый.

idempotent операция - та, в которой результат будет be the same, неважно, сколько раз Вы запрашиваете его.

Это выдерживает обосновать, что, как ДОБИРАЕТСЯ, используются для [1 121] безопасный операции, которые они автоматически также идемпотент . Обычно ПОЛУЧАТЬ используется для получения ресурса (вопрос и его связанные ответы на переполнении стека, например) или набор ресурсов.

А УСПОКОИТЕЛЬНОЕ приложение будет использовать PUTs для операций, которые являются not safe but idempotent.

я знаю, что вопрос был о, ДОБИРАЮТСЯ и POST, но я возвращусь к POST через секунду.

Обычно ПОМЕЩЕННЫЙ используется для редактирования ресурса (редактирующий вопрос или ответ на переполнении стека, например).

А POST использовался бы для любой операции, которая является neither safe or idempotent.

Обычно POST использовался бы для создания нового ресурса, например, создающего НОВОЕ ТАК вопрос (хотя в некоторых проектах ПОМЕЩЕННЫЙ будет использоваться для этого также).

при выполнении POST дважды Вы закончили бы тем, что создали ДВА новых вопроса.

существует также УДАЛИТЬ операция, но я предполагаю, что могу оставить это там:)

Обсуждение

На практике, который обычно только поддерживают современные веб-браузеры, ДОБИРАЕТСЯ и POST надежно (можно выполнить все эти операции через вызовы JavaScript, но с точки зрения ввода данных в формах и нажатии утверждают, что Вы обычно получали эти две опции). В УСПОКОИТЕЛЬНОМ приложении POST будет часто переопределяться, чтобы обеспечить ПОМЕЩЕННЫЙ и УДАЛИТЬ вызовы также.

, Но, даже если Вы не следуете за УСПОКОИТЕЛЬНЫМИ принципами, может быть полезно думать с точки зрения использования, ДОБИРАЮТСЯ для получения / просмотр информации и POST для создания / редактирование информации.

Вы никогда не должны использовать, ДОБИРАЮТСЯ для операции, которая изменяет данные. Если поисковая система проверяет ссылку на Ваше зло op или клиентские закладки, это могло записать большую проблему.

198
ответ дан Arpit Parasana 23 November 2019 в 00:49
поделиться

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

Используя его для обновления состояния - как ТО, ЧТОБЫ ПОЛУЧАТЬ delete.php?id=5 для удаления страницы - очень опасно. Люди узнали это, когда веб-акселератор Google начал выбирать URL с упреждением на страницах - он поразил все 'удалить' ссылки и вытер данные народов. То же самое может произойти с пауками поисковой системы.

3
ответ дан ceejayoz 23 November 2019 в 00:49
поделиться

Краткая версия

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

Преимущества GET:

  • URL-адреса можно безопасно добавлять в закладки.
  • Страницы можно безопасно перезагружать.

Недостатки GET:

  • Переменные передаются через URL-адрес в виде пар имя-значение. (Угроза безопасности)
  • Ограниченное количество переменных, которые можно передать. (На основе браузера. Например, Internet Explorer ограничен 2048 символами. )

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

Преимущества POST:

  • Пары имя-значение не отображаются в URL-адресе. (Безопасность + = 1)
  • Неограниченное количество пар имя-значение может быть передано через POST. Ссылка.

Недостатки POST:

  • Страница, которая использовала данные POST, не может быть закладкой. (Если хотите.)

Расширенная версия

Непосредственно по протоколу передачи гипертекста - HTTP / 1.1 :

9.3 GET

Метод GET означает получение любой информации (в форма объекта) идентифицируется Request-URI. Если Request-URI относится к процессу создания данных, то в качестве объекта в ответе должны быть возвращены произведенные данные, а не исходный текст процесса, если только этот текст не является выходом процесса.

Семантика метода GET изменяется на «условный GET», если сообщение запроса включает поле заголовка If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match или If-Range. . Условный метод GET требует, чтобы объект был передан только при обстоятельствах, описанных полями условного заголовка. Условный метод GET предназначен для уменьшения ненужного использования сети, позволяя обновлять кэшированные объекты без необходимости многократных запросов или передачи данных, уже хранящихся у клиента.

Семантика метода GET изменяется на «частичный GET», если сообщение запроса включает в себя поле заголовка Range. Частичный GET запрашивает передачу только части объекта, как описано в разделе 14.35. Метод частичного GET предназначен для уменьшения ненужного использования сети, позволяя выполнять частично извлеченные объекты без передачи данных, уже хранящихся у клиента.

Ответ на запрос GET кэшируется тогда и только тогда, когда он соответствует требованиям к HTTP-кешированию, описанным в разделе 13.

См. Раздел 15.1.3 для соображений безопасности при использовании для форм.

9.5 POST

Метод POST используется для запроса, чтобы исходный сервер принял сущность, включенная в запрос как новый подчиненный ресурс идентифицируется Request-URI в строке запроса. POST разработан чтобы унифицированный метод охватывал следующие функции:

  • Аннотация существующих ресурсов;

  • Размещение сообщения на доске объявлений, в группе новостей, в списке рассылки, или аналогичная группа статей;

  • Предоставление блока данных, например, в результате отправки формы, в процесс обработки данных;

  • Расширение базы данных с помощью операции добавления.

Фактическая функция, выполняемая методом POST, определяется server и обычно зависит от Request-URI. Размещенная сущность подчиняется этому URI так же, как файл подчиняется к каталогу, содержащему его, новостная статья подчиняется группа новостей, в которой она размещена, или запись подчиняется база данных.

Действие, выполняемое методом POST, может не привести к ресурс, который можно идентифицировать по URI. В этом случае либо 200 (ОК) или 204 (Нет содержимого) - соответствующий статус ответа, в зависимости от того, содержит ли ответ объект, который описывает результат.

65
ответ дан 23 November 2019 в 00:49
поделиться

Qt 4,6 представляет новый низкоуровневый номер люкс аудио API в модуле QtMultimedia . Функцию QAudioInput можно использовать для записи необработанного звука с микрофона.

В настоящее время этот API реализован для Windows, Mac и Linux (с поддержкой аудиосистем PULSE и ALSA). В настоящее время разрабатывается поддержка других платформ, включая Symbian в мобильном пространстве.

-121--4293754-

Вы можете сделать это довольно просто с помощью метода EncodedImage.scaleImage32 () . Необходимо указать коэффициенты, на которые требуется масштабировать ширину и высоту (как Fixed32 ).

Вот пример кода, который определяет масштабный коэффициент для ширины и высоты путем деления размера исходного изображения на требуемый размер с помощью класса RIM Fixed32 .

public static EncodedImage resizeImage(EncodedImage image, int newWidth, int newHeight) {
    int scaleFactorX = Fixed32.div(Fixed32.toFP(image.getWidth()), Fixed32.toFP(newWidth));
    int scaleFactorY = Fixed32.div(Fixed32.toFP(image.getHeight()), Fixed32.toFP(newHeight));
    return image.scaleImage32(scaleFactorX, scaleFactorY);
}

Если вам посчастливилось стать разработчиком ОС 5.0, Марк опубликовал ссылку на новые API , которые намного понятнее и универсальнее того, что я описал выше. Например,

public static Bitmap resizeImage(Bitmap originalImage, int newWidth, int newHeight) {
    Bitmap newImage = new Bitmap(newWidth, newHeight);
    originalImage.scaleInto(newImage, Bitmap.FILTER_BILINEAR, Bitmap.SCALE_TO_FILL);
    return newImage;
}

(Естественно, вы можете заменить параметры фильтра/масштабирования в зависимости от ваших потребностей).

-121--3465077-

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

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

Автор сценария должен использовать записи для изменения базы данных и использовать get только для получения информации.

Языки сценариев предоставляют множество средств для доступа к запросу. Например, PHP позволяет использовать $ _ REQUEST для получения сообщения или получения. Следует избегать этого в пользу более конкретного $ _ GET или $ _ POST .

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

0
ответ дан 23 November 2019 в 00:49
поделиться

Что ж, важнее всего то, что все, что вы отправляете через GET , будет отображаться через URL. Во-вторых, как говорит Сиджайоз, существует ограничение на количество символов для URL.

0
ответ дан 23 November 2019 в 00:49
поделиться

Первое, что важно - это , означающее GET по сравнению с POST:

  • GET следует использовать, чтобы ... получить .. некоторая информация от сервера,
  • в то время как POST должна использоваться для отправки некоторой информации на сервер.


После этого можно отметить пару вещей:

  • Используя GET, ваши пользователи могут использовать кнопку «назад» в своем браузере и добавлять страницы в закладки.
  • Существует ограничение на размер параметры, которые можно передать как GET (2КБ для некоторых версий Internet Explorer, если я не ошибаюсь) ; ограничение намного больше для POST и обычно зависит от конфигурации сервера.


В любом случае, я не думаю, что мы могли бы «жить» без GET: подумайте, сколько URL-адресов вы используете с параметрами в строке запроса каждый день - без GET все это не сработало бы; -)

27
ответ дан 23 November 2019 в 00:49
поделиться

Одно практическое отличие состоит в том, что браузеры и веб-серверы имеют ограничение на количество символов, которые могут существовать в URL-адресе. Он отличается от приложения к приложению, но, безусловно, его можно использовать, если у вас есть textarea в ваших формах.

Еще одна проблема с GET - они индексируются поисковыми системами и другими автоматическими системами. Когда-то у Google был продукт, который предварительно выбирал ссылки на просматриваемой вами странице, поэтому они загружались быстрее, если вы нажимали на эти ссылки. Это вызвало серьезный хаос на сайтах, на которых были ссылки типа delete.php? Id = 1 - люди потеряли свои сайты целиком.

8
ответ дан 23 November 2019 в 00:49
поделиться

Данные HTTP Post не имеют определенного ограничения на объем данных, тогда как разные браузеры имеют разные ограничения для GET. RFC 2068 гласит:

Серверы должны быть осторожны с в зависимости от длины URI, превышающей 255 байтов, потому что некоторые более старые реализации клиента или прокси могут некорректно {{1} } поддерживают эту длину

В частности, вы должны выбрать правильные конструкции HTTP для того, для чего они используются. HTTP-запросы GET не должны иметь побочных эффектов и могут быть безопасно обновлены и сохранены с помощью HTTP-прокси и т. Д.

HTTP-запросы POST используются, когда вы хотите отправить данные по ресурсу url.

Типичный пример использования HTTP GET - это поиск, то есть Search? Query = my + query Типичный пример использования HTTP POST - отправка отзыва в онлайн-форму.

-1
ответ дан 23 November 2019 в 00:49
поделиться

Просто используйте безопасный фильтр джанго. В шаблоне можно сделать следующее:

{{ instance.my_text_field|safe }}
-121--2092056-

На уровне языка Си и его стандартной библиотеки нет флагов O _ BINARY и O _ TEXT . Двоичный или текстовый режим выбирается путем добавления спецификатора b параметра режима функции fopen . Сам спецификатор, конечно, поддерживается всеми реализациями C, но на платформах POSIX этот спецификатор не имеет эффекта: по спецификации POSIX текстовый режим тот же, что и бинарный.

Не удивительно, что если вы углубитесь в уровень нестандартных специфичных для платформы функций ввода-вывода Unix, вы обнаружите, что они вообще не знают об этом различии текста/двоичного кода.

-121--1578448-

Прочитайте статью о HTTP в Википедии . Он объяснит, что такое протокол и что он делает:

GET

Запрашивает представление указанного ресурса. Обратите внимание, что GET не следует использовать для операций, вызывающих побочные эффекты, например, для выполнения действий в веб- прикладной. Одной из причин этого является то, что GET может произвольно использоваться роботами или обходчиками, которые не должны учитывать побочные эффекты, которые должен вызвать запрос.

и

POST Передает данные для обработки (например, из HTML-формы) идентифицированному ресурсу. Данные включаются в тело запроса. Это может привести к созданию нового ресурса или обновлению существующих ресурсов или и того, и другого.

У W3C есть документ с именем URI, Адресабельность и использование HTTP GET и POST , который объясняет, когда использовать что. Ссылка на

1,3 Быстрый контрольный список для выбора HTTP GET или POST

  • Используйте GET, если:
    • Взаимодействие больше похоже на вопрос (т.е. это безопасная операция, например, запрос, операция чтения или поиск).

и

  • Используйте POST, если:
    • Взаимодействие больше похоже на заказ, или
    • Взаимодействие изменяет состояние ресурса в путь, которое воспринимает пользователь (например, подписка на услугу), или o Пользователь несет ответственность за результаты взаимодействия.

Однако до принятия окончательного решения об использовании HTTP GET или POST, пожалуйста, также рассмотрите соображения относительно конфиденциальных данных и практические соображения.

Практическим примером может быть каждый раз, когда вы отправляете HTML-форму. Для действия формы указывается проводка или получение . PHP заполнит $ _ GET и $ _ POST соответственно.

1
ответ дан 23 November 2019 в 00:49
поделиться

Нет ничего такого, чего бы вы не могли сделать per-se. Дело в том, что вы не должны изменять состояние сервера при HTTP GET. HTTP-прокси предполагают, что поскольку HTTP GET не изменяет состояние, то не имеет значения, вызывает ли пользователь HTTP GET один раз или 1000 раз. Используя эту информацию, они считают, что безопасно возвращать кэшированную версию первого HTTP GET. Если вы нарушаете спецификацию HTTP, вы рискуете сломать HTTP-клиент и прокси-серверы в природе. Не делайте этого :)

4
ответ дан 23 November 2019 в 00:49
поделиться

Из RFC 2616 :

9.3 GET
Метод GET означает получение любой информации (в форме объекта), идентифицированной {{ 1}} Request-URI. Если Request-URI ссылается на процесс создания данных, именно произведенные данные должны быть возвращены в качестве объекта в ответе, а не исходный текст процесса, если только этот текст не является результатом процесса.


9.5 POST
Метод POST используется для запроса, чтобы исходный сервер принял объект, заключенный в запросе , как новый подчиненный объект ресурс, идентифицированный Request-URI в строке запроса. POST разработан , чтобы позволить единообразному методу покрывать следующие функции:

  • Аннотации существующих ресурсов;
  • Отправка сообщения на доску объявлений, группу новостей, список рассылки или { {1}} аналогичная группа статей;
  • Предоставление блока данных, например результата отправки формы, в процесс обработки данных;
  • Расширение базы данных с помощью операции добавления.

Фактическая функция, выполняемая методом POST , определяется сервером и обычно зависит от Request-URI. Опубликованный объект подчиняется этому URI так же , как файл подчиняется каталогу , содержащему его, а новостная статья подчиняется группа новостей , в которой она размещена, или запись подчиняется базе данных.

Действие, выполняемое методом POST , может не привести к ресурсу , который можно идентифицировать по URI.В этом случае либо 200 (ОК), либо 204 (Нет содержания) являются подходящим статусом ответа , в зависимости от того, содержит ли ответ сущность, которая описывает результат.

3
ответ дан 23 November 2019 в 00:49
поделиться

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

Используйте GET, если вы хотите прочитать данные без изменения состояния, и используйте POST, если вы хотите обновить состояние сервера.

11
ответ дан 23 November 2019 в 00:49
поделиться

POST может перемещать большие данные, а GET - нет.

Но в целом это не сокращение GET, а скорее соглашение, если вы хотите, чтобы ваш сайт/webapp вел себя хорошо.

Посмотрите на http://www.w3.org/2001/tag/doc/whenToUseGet.html

3
ответ дан 23 November 2019 в 00:49
поделиться

В PHP ограничение данных POST обычно устанавливается вашим php.ini . GET , я полагаю, ограничен настройками сервера / браузера - обычно около 255 байт.

1
ответ дан 23 November 2019 в 00:49
поделиться

Еще одно отличие состоит в том, что для POST обычно требуется две операции HTTP, а для GET - только одна.

Edit: Я должен уточнить - для общих шаблонов программирования. Обычно ответ на POST-запрос прямой HTML-страницей является сомнительным по ряду причин, одна из которых раздражает: «вы должны повторно отправить эту форму, вы хотите сделать это?» при нажатии кнопки возврата.

0
ответ дан 23 November 2019 в 00:49
поделиться
Другие вопросы по тегам:

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