Характеристика | GET | POST |
---|---|---|
Назначение | Получение данных | Отправка данных |
Видимость параметров | В URL (query string) | В теле запроса (body) |
Кэширование | Да | Нет |
Безопасность | Менее безопасен | Более безопасен |
Длина данных | Ограничена длиной URL | Нет жестких ограничений |
Идемпотентность | Да (повторные запросы безопасны) | Нет |
Использование в HTML | <a> , <form method="GET"> | <form method="POST"> |
Характеристики:
Пример в C# (ASP.NET Core):
// Клиентский запрос
public async Task GetData()
{
var client = new HttpClient();
var response = await client.GetAsync("https://api.example.com/data?id=123");
var content = await response.Content.ReadAsStringAsync();
}
// Серверный обработчик
[HttpGet("data")]
public IActionResult GetData(int id)
{
var data = _repository.GetById(id);
return Ok(data);
}
Типичные случаи использования:
Характеристики:
Пример в C# (ASP.NET Core):
// Клиентский запрос
public async Task SendData()
{
var client = new HttpClient();
var data = new { Name = "John", Age = 30 };
var content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.example.com/users", content);
}
// Серверный обработчик
[HttpPost("users")]
public IActionResult CreateUser([FromBody] UserDto user)
{
var createdUser = _service.CreateUser(user);
return CreatedAtAction(nameof(GetUser), new { id = createdUser.Id }, createdUser);
}
Типичные случаи использования:
// Поиск товаров (GET)
[HttpGet("products/search")]
public IActionResult SearchProducts([FromQuery] string term, [FromQuery] decimal? maxPrice)
{
// Логика поиска
return Ok(results);
}
// Создание заказа (POST)
[HttpPost("orders")]
public async Task<IActionResult> CreateOrder([FromBody] OrderCreateDto order)
{
// Валидация и создание заказа
return Created($"/orders/{newOrder.Id}", newOrder);
}
GET:
POST:
Правильный выбор метода влияет на: