Ответ
GET и POST — это два основных метода (глагола) протокола HTTP, определяющие тип операции, которую клиент хочет выполнить с ресурсом на сервере.
| Характеристика | GET | POST |
|---|---|---|
| Назначение | Получение данных. | Отправка данных для обработки. |
| Данные в запросе | Параметры передаются в URL (query string). | Данные передаются в теле запроса (request body). |
| Видимость | Параметры видны в адресной строке, истории браузера, логах. | Данные скрыты от прямого наблюдения в UI. |
| Кэширование | Запросы могут кэшироваться браузером и промежуточными прокси. | Запросы обычно не кэшируются. |
| Идемпотентность | Идемпотентный: Многократный вызов не должен изменять состояние сервера. | Неидемпотентный: Каждый вызов может привести к изменению (например, создание новой записи). |
| Безопасность | Считается «безопасным» (safe), не должен изменять данные. | Не является «безопасным», предназначен для изменения данных. |
Пример на Python (Flask):
from flask import Flask, request, jsonify
app = Flask(__name__)
# GET запрос для получения информации о товаре
@app.route('/product/<int:product_id>', methods=['GET'])
def get_product(product_id):
# Логика получения товара из БД
product = db.get_product_by_id(product_id)
return jsonify(product), 200
# POST запрос для создания нового товара
@app.route('/product', methods=['POST'])
def create_product():
# Данные приходят в теле запроса (обычно JSON)
data = request.get_json()
new_product = {
'name': data['name'],
'price': data['price']
}
# Логика сохранения товара в БД
created_id = db.save_product(new_product)
return jsonify({'id': created_id}), 201 # Код 201 Created
В RESTful API эти методы являются частью единой модели: GET для чтения, POST для создания (часто), наряду с PUT (обновление/замена), PATCH (частичное обновление) и DELETE (удаление).