cURL в Dart
Вставьте команду curl и получите код Dart, выполняющий тот же запрос через package:http.
cURL в Dart разбирает команду в браузере: учётные данные не покидают ваше устройство.
Преобразовать в Swift
Об инструменте cURL в Dart
Документация бэкенда даёт команду curl, а приложению на Flutter нужен Dart. Конвертер наводит мост: он разбирает флаги curl так же, как это делает сам curl, и выдаёт код на package:http — том самом пакете, от которого уже зависит почти любой проект на Dart или Flutter. Заголовки собираются в типизированную карту, тело JSON превращается в карту Dart и кодируется через jsonEncode, а базовая аутентификация собирается заново через base64Encode. Глаголы без сокращённых методов уходят в http.Request.
Возможности
- Разбирает -X, -H, -d, --data-raw, --json, -u, -b, -A, -e и -G так же, как curl
- Генерирует код на package:http, стандартном HTTP-клиенте Dart
- Заголовки собираются в типизированную Map<String, String>
- Тело JSON выводится картой Dart и кодируется через jsonEncode
- Базовая аутентификация собирается через base64Encode, а не вставкой Base64
- Для глаголов без сокращений используется http.Request
- Предупреждает о флагах curl без разумного соответствия в Dart
Как использовать cURL в Dart
- Вставьте команду curl из документации к вашему API
- Прочитайте сгенерированный Dart справа
- Проверьте предупреждения о флагах, которые не удалось перенести
- Скопируйте код или скачайте его как .dart
Пример
Ввод
curl -X PUT https://api.example.com/users/1 -H 'Authorization: Bearer TOKEN' -d '{"role":"admin"}'
Результат
final response = await http.put(url, headers: headers, body: body);
Глагол берётся из -X, а тело JSON собирается картой Dart перед кодированием.
Частые ошибки и устранение неполадок
- При запуске файла пакет не найден. — Добавьте его в pubspec.yaml в dependencies как http и выполните dart pub get. Он не входит в SDK, хотя и поддерживается командой Dart.
- Запрос падает только во Flutter web. — Это CORS, а не код. Браузер применяет политику одного источника, которой команда curl никогда не видит.
- Строка в теле странно подставляется. — В Dart знак доллара начинает интерполяцию. В сгенерированных литералах он экранирован, но вставленные вручную значения нужно экранировать самому.
- На Android запрос идёт, а к локальному серверу в эмуляторе нет. — Эмулятор Android не видит localhost хост-машины: используйте 10.0.2.2 и разрешите обычный HTTP в конфигурации сетевой безопасности.
Часто задаваемые вопросы
- Будет ли сгенерированный код работать во Flutter?
- Да. package:http ведёт себя одинаково во Flutter и в чистом Dart, поэтому код запроса можно вставить в сервисный класс как есть.
- Что выбрать: package:http или Dio?
- package:http — более лёгкий официальный вариант, покрывающий почти любые запросы. Dio добавляет перехватчики, отмену и удобство multipart.
- Как преобразуется тело JSON?
- Оно разбирается и записывается литералом карты Dart, а затем кодируется через jsonEncode. Вложенные объекты и массивы остаются читаемыми.
- А если у метода нет помощника вроде http.get?
- Сгенерированный код собирает http.Request с глаголом-строкой и отправляет через send(), что покрывает PURGE, LINK и любой другой метод.
- Загружается ли команда curl для преобразования?
- Нет. Разбор и генерация кода происходят в вашем браузере, поэтому токены и ключи API остаются на устройстве.
Связанные инструменты
- cURL в Swift — Превращает команду curl в код Swift на URLSession.
- cURL в Fetch — Преобразуйте команду curl в вызов fetch() на JavaScript.
- curl в Python — Преобразование команды curl в скрипт Python requests.
- curl в Go — Преобразование команды curl в код Go net/http.
- curl в Node.js — Преобразование команды curl в код Node.js axios.
- API-клиент — Отправляйте HTTP-запросы, задавайте заголовки и параметры и изучайте ответы; сохраняет последние 25.
Все инструменты ArrayKit