HttpRequest

Последнее обновление: 13.04.2023

Когда сервер получает очередной запрос от клиента, для этого запроса создается объект типа HttpRequest. Этот класс реализует интерфейс класса Stream и поэтому представляет поток для чтения.

HttpRequest позволяет получить информацию чтобы ряда свойств:

  • contentLength: длина тела запроса

  • cookies: куки, отправленные клиентом, в виде объекта List<Cookie>

  • headers: заголовки запроса (объект HttpHeaders)

  • method: метод запроса, например, GET, POST, PUT и т.д.

  • requestedUri: запрошенный адрес в виде объекта Uri

  • response: объект HttpResponse, который ассоциирован с данным запрос и который используется для отправки ответа

  • uri: запрошенный путь в виде объекта Uri

Данную информацию мы можем использовать при обработке запросов. Например, в зависимости от запрошенного пути отправим клиенту тот или иной ответ:

import 'dart:io';

void main() async {
  var server = await HttpServer.bind(InternetAddress.anyIPv6, 8888);
  print("Сервер запущен...");
  await server.forEach((HttpRequest request) {

    var responseText = "Page Not Found";
    switch (request.uri.path) {
      case "/":               // если обращение к главной странице
        responseText = "Index Page";
      case "/about":               // если обращение по пути "/about"
        responseText = "About Page";
      case "/contact":               // если обращение по пути "/contacts"
        responseText = "Contacts Page";
    }
    final response = request.response;
    response.write(responseText);
    response.close(); 
  });
}

Класс Uri имеет свойство path, которое хранит запрошенный путь. В примере выше мы проверяем запрошенный путь

switch (request.uri.path)

и в зависимости от его значения устанавливаем соответствующий текст для отправки клиенту. В данном случае мы устанавливаем определенные значения для запросов по путям "/" (обращение к главной странице), "/about" и "/contact". При запросах по другим путям будет отправляться текст по умолчанию:

Обработка запросов на сервере на http-сервере на языке Dart
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850