Какво е PUT?
Методът PUT се използва за актуализиране на ресурса, наличен на сървъра. Обикновено той замества всичко, което съществува в целевия URL адрес, с нещо друго. Можете да го използвате, за да създадете нов ресурс или да замените съществуващ. PUT заявява, че затвореният обект трябва да се съхранява под предоставения заявен URI (Uniform Resource Identifier).
В този урок ще научите:
- Какво е PUT?
- Какво е POST?
- Пример за PUT
- Пример за POST
- Разлика между PUT и POST
- Тестване на API с PUT заявки
- Тестване на API с POST заявки
- Предимства на метода PUT
- Предимства на метода POST
Какво е POST?
POST е метод, който се поддържа от HTTP и
изобразява, че уеб сървърът приема данните, включени в тялото на съобщението, което е поискано. POST често се използва от World Wide Web за изпращане на генерирани от потребителя данни към уеб сървъра или когато качвате файл.
КЛЮЧОВИ РАЗЛИКИ:
- Методът PUT се извиква, когато трябва да модифицирате един ресурс, докато методът POST се извиква, когато трябва да добавите дъщерен ресурс.
- Отговорът на метода PUT може да бъде кеширан, но не можете да кеширате отговорите на метода PUT.
- Можете да използвате UPDATE заявка в PUT, докато можете да използвате създайте заявка в POST.
- В метода PUT клиентът решава кой URI ресурс трябва да има, а в метода POST сървърът решава кой URI ресурс трябва да има.
- PUT работи като специфична, докато POST работи като абстрактна.
- Ако изпратите една и съща заявка PUT няколко пъти, резултатът ще остане същият, но ако изпратите една и съща заявка POST няколко пъти, ще получите различни резултати.
- PUT методът е идемпотентен, докато методът POST не е идемпотентен.
Пример за PUT
Ето примера на уеб сървъра за метод PUT:
HTTP PUT http://www.google.com/users/234
HTTP PUT http://www.google.com/users/234/accounts/567
Заявка
PUT /new.html HTTP/1.1Host: example.comContent-type: text/htmlContent-length: 20New File
Отговори
Ако целевият ресурс има текущо представяне и е модифициран със състоянието на затвореното представяне, тогава сървърът трябва да изпрати два отговора. Първият код за отговор е 200 (OK), а вторият код за отговор е 204 (Без съдържание).
Ако целевият ресурс няма представяне, тогава сървърът трябва да информира потребителя, като изпрати 201 отговор (Създаден).
HTTP/1.1 201 CreatedContent-Location: /new.html
Пример за POST
Ето пример за POST метод:
HTTP POST http://www.google.com/users
HTTP POST http://www.google.com/users/234/accounts
Формуляр, използващ типа съдържание по подразбиране / x-www-form-urlencoded:
POST /test HTTP/1.1Host: abc.exampleContent-Type: application/x-www-form-urlencodedContent-Length: 40field1=value1&field2=value2
Разлика между PUT и POST
Ето важната разлика между метода PUT и POST:
СЛАГАМ | ПОСТ |
Този метод е идемпотентен. | Този метод не е идемпотентен. |
Методът PUT е извикване, когато трябва да модифицирате отделен ресурс, който вече е част от събирането на ресурси. | Методът POST е извикване, когато трябва да добавите дъщерен ресурс под колекция ресурси. |
RFC-2616 изобразява, че методът PUT изпраща заявка за затворен обект, съхраняван в предоставения URI на заявката. | Този метод изисква от сървъра да приеме обекта, който е затворен в заявката. |
Синтаксисът на метода PUT е PUT / questions / {question-id} | Синтаксисът на метода POST е POST / въпроси |
Отговорът на метода PUT може да бъде кеширан. | Не можете да кеширате отговорите на метода PUT. |
PUT / vi / сок / поръчки / 1234 показва, че актуализирате ресурс, който е идентифициран с "1234". | POST / vi / сок / поръчки показва, че създавате нов ресурс и връщате идентификатор за описание на ресурса. |
Ако изпратите една и съща заявка няколко пъти, резултатът ще остане същият. | Ако изпратите една и съща заявка POST повече от веднъж, ще получите различни резултати. |
PUT работи като специфичен. | POST работа като абстрактна. |
Използваме UPDATE заявка в PUT. | Използваме заявка за създаване в POST. |
В метода PUT клиентът решава кой URI ресурс трябва да има. | В метода POST сървърът решава кой URI ресурс трябва да има. |
Тестване на API с PUT заявки
Ето стъпките за тестване на API с PUT заявки:

Стъпка 1) Актуализирайте ресурсите с PUT заявка.
Стъпка 2) Използвайте метода GET за ресурс. Ако PUT заявката е успешна, ще получите нови данни. Този метод ще се провали, ако предоставените данни в заявката са невалидни. Следователно няма да актуализира нищо.
Тестване на API с POST заявки
Ето стъпките за тестване на API с POST заявки:

Стъпка 1) Създайте ресурс с помощта на POST заявка и се уверете, че той връща 200 код на състоянието.
Стъпка 2) Направете GET заявка за този ресурс и запишете данните в правилния формат.
Стъпка 3) Трябва да добавите тестове, които гарантират, че POST заявките се провалят с неправилни данни.
Предимства на метода PUT
Ето плюсовете / ползите от използването на метода PUT:
- Той ви помага да съхранявате предоставения обект под предоставения URI
- Ако предоставеният обект вече съществува, можете да извършите операцията по актуализиране или да създадете с този URI.
- Можете да създадете ресурс колкото пъти искате.
- Създаването на ресурс с PUT метод е много лесно.
- Не е необходимо да проверявате дали потребителят е щракнал няколко пъти бутона за изпращане или не.
- Той може да идентифицира обекта, приложен към заявката.
Предимства на метода POST
Ето плюсовете / ползите от използването на POST метод:
- Този метод ви помага да определите URI на ресурса.
- Посочването на нов заглавие на местоположението на ресурса е много лесно, като се използва заглавието на местоположението.
- Можете да изпратите заявка за приемане на обекта като нов подчинен на ресурса, който е идентифициран от URI.
- Можете да изпращате генерирани от потребителя данни на уеб сървъра.
- Много е полезно, когато не знаете URL, да запазите какъвто и да е ресурс.
- Използвайте POST, когато имате нужда от сървъра, който контролира генерирането на URL адреси на вашите ресурси.
- POST е сигурен метод, тъй като заявките му не остават в историята на браузъра.
- Можете без усилия да предавате голямо количество данни с помощта на поща.
- Можете да запазите данните частни.
- Този метод може да се използва за изпращане на двоични, както и ASCII данни.