Ответ
Для получения данных сущности (ресурса) используется метод GET.
Ключевые характеристики GET:
- Безопасный (Safe): Выполнение запроса не должно изменять состояние сервера. Он предназначен только для чтения данных.
- Идемпотентный (Idempotent): Многократное выполнение одного и того же
GET-запроса дает идентичный результат (при условии, что данные на сервере не изменились). - Кэшируемый (Cacheable): Ответы на
GET-запросы могут и должны кэшироваться на разных уровнях (браузер, прокси, CDN) для повышения производительности.
Практический пример на C# с HttpClient:
public async Task<User> GetUserAsync(int userId)
{
using var httpClient = new HttpClient();
// Параметры передаются через URI
var response = await httpClient.GetAsync($"https://api.example.com/users/{userId}");
response.EnsureSuccessStatusCode(); // Выбрасывает исключение при ошибке 4xx/5xx
// Десериализация ответа (JSON) в объект
var user = await response.Content.ReadFromJsonAsync<User>();
return user;
}
Важные нюансы и best practices:
- Не используйте
GETдля операций, изменяющих данные (например, для удаления или списания средств). - Не передавайте конфиденциальные данные в параметрах URL (они остаются в логах серверов, истории браузера). Для этого используйте
POSTс телом запроса или заголовки с шифрованием. - Учитывайте ограничение длины URL (зависит от браузера и сервера, обычно несколько тысяч символов). Для передачи больших объемов данных в запросе на чтение используйте
POST(это нарушает строгий REST, но практикуется в GraphQL или сложных фильтрах).