HTTP POST с параметрами URL-запроса - хорошая идея или нет? [закрыто]

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

#include <stdio.h>
#include <stdlib.h>


void changeIntVal(int *x) {
    *x = 5;
}

void changePointerAddr(int **q) {
    int *newad;
    *q = newad;
}

void changePPAddr(int ***q) {
    int **dummy;
    *q = dummy;
}

int main() {
    int *p;
    int **pp;
    int *tempForPP;
    int a = 0;
    printf("\n The address pointing by p -> %p, pp -> %p, value of a -> %d ", p, pp, a);


    p = &a;
    pp = &tempForPP;
    printf("\n The address pointing by p -> %p, pp -> %p, value of a -> %d ", p, pp, a);

    changeIntVal(&a);        // ----
                             //    |---
    changePointerAddr(&p);   // ----  |---->  parts of what I mean
                             //    |---
    changePPAddr(&pp);       // ----

    printf("\n The address pointing by p -> %p, pp -> %p, value of a -> %d ", p, pp, a);

    return 0;

}
424
задан Zoe 17 November 2018 в 15:50
поделиться

5 ответов

Если Ваше действие не является идемпотентом, то Вы ДОЛЖНЫ использование POST. Если Вы не делаете, Вы просто напрашиваетесь на неприятности по линии. GET, PUT и DELETE методы , потребовал быть идемпотентом. Вообразите то, что произошло бы в Вашем приложении, если бы клиент выбирал каждое возможное с упреждением GET запрос на Ваш сервис - если это вызвало бы побочные эффекты, видимые клиенту, то что-то неправильно.

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

Думают о части запроса URL как команда к ресурсу для ограничения объема текущего запроса. Как правило, строки запроса используются, чтобы отсортировать или отфильтровать GET запрос (как ?page=1&sort=title), но я предполагаю, что имеет смысл на POST также ограничивать объем (возможно, как ?action=delete&id=5).

239
ответ дан Don McCaughey 18 November 2018 в 01:50
поделиться

Я соглашаюсь - вероятно, более безопасно использовать ПОЛУЧИТЬ запрос, если Вы просто передаете данные в URL а не в теле. См. этот подобный вопрос для некоторых дополнительных представлений о целом понятии POST+GET.

-12
ответ дан Community 18 November 2018 в 01:50
поделиться

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

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

, Другими словами, если Ваше действие API изменяет состояние сервера, REST советует нам использовать POST/помещать/удалять, но не ДОБИРАТЬСЯ.

Агенты пользователя обычно понимают, что выполнение нескольких СООБЩЕНИЙ плохо и предостережет от него, потому что намерение POST состоит в том, чтобы изменить состояние сервера (например, заплатить за товары на контроле), и Вы, вероятно, не хотите делать это дважды!

Выдерживают сравнение с ПОЛУЧЕНИЕМ, которое можно сделать часто, как Вам нравится (идемпотент).

3
ответ дан saille 18 November 2018 в 01:50
поделиться

Вы хотите причины? Вот тот:

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

Источник: стандарт HTML 4.01, разделите 17.13 Представлений Формы

62
ответ дан Powerlord 18 November 2018 в 01:50
поделиться

С программной точки зрения для клиента это является упаковочным параметры и добавление их на URL и проведение POST по сравнению с ПОЛУЧЕНИЕМ. На серверной стороне это оценивает входящие параметры от querystring вместо отправленных байтов. В основном это - промывка.

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

, Тем не менее, с точки зрения программиста, я предпочитаю позволять или POST со всеми параметрами в теле или ПОЛУЧЕНИЕ со всеми параметрическими усилителями на URL, и явно игнорировать параметры URL с любым запросом POST. Это избегает беспорядка.

9
ответ дан jro 18 November 2018 в 01:50
поделиться
  • 1
    очень хороший, продолжайте работать! – Edward83 4 July 2013 в 10:38
Другие вопросы по тегам:

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