LINUX.ORG.RU

Генератор HTTP-запросов gURL

 , ,


4

3

Хочу поделиться с вами своим генератором HTTP-запросов gURL.
Генератор HTTP-запросов может быть полезен при разработке и отладке backend-части сайта, когда есть необходимость быстро сформировать HTTP-запрос определенного вида.

gURL обладает следующими возможностями:

  • синтез HTTP-запросов (поддерживаются методы GET, POST, PUT, HEAD, DELETE);
  • просмотр заголовков ответа;
  • просмотр тел ответа в различных представлениях:
    • текстовое представление (отображение в простом текстовом виде с подсветкой синтаксиса);
    • шестнадцатеричное представление (отображение в виде шестнадцатеричного дампа);
    • web-представление (отображение в браузере);
    • представление JSON-данных в виде дерева.
  • подсветка синтаксиса тел ответов в некоторых форматах;
  • форматированный вывод тел ответов в некоторых форматах.

>>> Подробности

А что с ним делать то? Был бы консольным можно было бы хоть в автотестах использовать.

loz ★★★★★ ()
Ответ на: комментарий от loz

ну он, как я понял, предназначен для того же, что и REST-консоль в браузере — когда, например, js-фронтенд отлаживаешь и нужно по-быстрому парочку запросов отправить, т.е. не нужно переключаться с графического (инструменты разработки в браузере) на текстовый (curl, ipython, etc)

actionless ★★★★★ ()
Ответ на: комментарий от actionless

Для браузеров кучи плагинов таких есть.

loz ★★★★★ ()
Ответ на: комментарий от loz

так и я про них говорю — это небраузерный аналог

зачем такое может понадобиться лично я не знаю, но пользуются же люди всякими штуками типа nmap-gui и т.п.

actionless ★★★★★ ()
Ответ на: комментарий от actionless

Полноценный веб-дебаггер типа фиддлера, работающий как прокси-сервер, умеющий брейкпоинты на запросах, модифицировать запросы и ответы на запросы очень даже нужен. А эта штука и правда какая-то слабая.

Dantix ★★ ()

Теги разделяются запятыми.

a1batross ★★★★★ ()

Следовало в новости чётко указать, что он гуёвый. По тексту новости этого не понятно, на мысли наводит только форматированный вывод (но мало ло, как он там форматируется), и понять это можно только по скриншоту.

Psych218 ★★★★★ ()

Без поддержки Mac OS X не нужно

anonymous ()

Впихнуть бы туда ещё простенький скриптовый язык какой-нить — и можно как кулхацкерскую тулзу использовать.

MiniRoboDancer ★☆ ()
Ответ на: комментарий от a1batross

Мне куда более интересно, как он этот тег вообще без звёзд создал и почему Shaman007 его не исправил.

MiniRoboDancer ★☆ ()

И как его собирать? Автоконф ругается.

Wizard_ ★★★★★ ()
Ответ на: комментарий от anonymous

В gURL ничего специфичного линуксового не использовано, так что при желании собрать и под Mac можно, вроде проблем возникнуть не должно. Во всяком случае, под Windows я его пробовал собрать

aleks_dsp ()

Неплохая штука. Установка только с исходников?

zevilz ★★★ ()

а утечка ресурсов\памяти есть у этого генератора?

(я не жалуюсь.. а просто спрашиваю :))

например, в случае если Http_Server будет преднамеренно нарушать TCP_ротокол — не будет посылать клиенту SYN-пакет закрывающий TCP_сессию.

и при этом допустим что такой Http_Server начнёт обрывать HTTP_сессию на разных фазах (но со сломанным TCP_протоколом — то есть без завершающего SYN-пакета).

будет ли в этом случае утечка ресурсов на стороне клиента (в программе gurl)?

# UPDATED:

судя по этому коду — утечка ресурсов — будет:

static void request_exec(Session* result, method_type mtype, const char* url,
                         const char* headers, const char* body, gsize body_len) {
    CURL* curl = curl_easy_init();
    if(!curl)
        g_error(_("failed to initialize curl"));

    SessionClass* sessioncl = SESSION_GET_CLASS(result);

    result->body_sended_bytes = 0;
    result->request.url = g_string_new(url);
    result->request.body = g_string_new_len(body, body_len);

    g_object_ref(result);
    curl_easy_setopt(curl, CURLOPT_PRIVATE, result);

    curl_easy_setopt(curl, CURLOPT_URL, result->request.url->str);
    configure_curl_method(curl, mtype, result);
    curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, receive_headers_cb);
    curl_easy_setopt(curl, CURLOPT_HEADERDATA, result);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, receive_body_cb);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, result);
    curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    set_headers(curl, &result->cURLheaders, headers);

    curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, debug_cb);
    curl_easy_setopt(curl, CURLOPT_DEBUGDATA, result);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);

    curl_multi_add_handle(sessioncl->curlm, curl);
}

user_id_68054 ★★★★★ ()
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от kravich

Ты в слове «шутка» буквы попутал.

anonymous ()

Сказал бы что не нужно и много аналогов, но что то все аналоги на которые я натыкался (их было мало, правда) имели тот или иной фатальный недостаток.

Всё таки если б он назывался как какой нить CURL REST Client, было бы очевиднее, зачем эта штука нужна.

А главное, здесь нету функции Save/Load, без этой киллер фичи толку от такого ПО мало. Вот.

А так, может здесь всё получится.

anonymous ()
Ответ на: комментарий от aleks_dsp
[wizard@home gurl]$ autoconf 
configure.ac:6: error: possibly undefined macro: AM_INIT_AUTOMAKE
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:20: error: possibly undefined macro: AC_DEFINE
configure.ac:24: error: possibly undefined macro: AC_MSG_WARN
configure.ac:53: error: possibly undefined macro: AM_PROG_CC_C_O
configure.ac:62: error: possibly undefined macro: AM_GLIB_GNU_GETTEXT

autoconf 2.69

Wizard_ ★★★★★ ()
Последнее исправление: Wizard_ (всего исправлений: 1)
Ответ на: комментарий от Wizard_

Во-первых, autoreconf -i
Во-вторых, automake я надеюсь в системе есть?

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Да, сейчас всё собралось. Мне кажется, это стоило хотя бы в INSTALL написать.

Wizard_ ★★★★★ ()
Ответ на: комментарий от Wizard_

Ну, autoreconf - это основа для работы с autotools, сразу после autoconf :-)

Но, вообще, руководство для developer-сборок(а как ни крути, использования autoconf - это обычно developer-сборка, релизы обычно пакуются уже с готовым ./configure) не помешало бы, да.

Pinkbyte ★★★★★ ()
./configure: line 6162: syntax error near unexpected token `0.50.1'[br]./configure: line 6162: `IT_PROG_INTLTOOL(0.50.1)'
Marlboro ()
Последнее исправление: Marlboro (всего исправлений: 1)

А в чем смысл? Для анализа трафика есть всякие снифферы типа фидлера и встроенные средства разработчиков в браузерах. Тут велосипед не нужен. А сгенерировать запрос на js как бы вообще не проблема.

d9d9 ★★★ ()

что эта поделка делает в новостях на главной вообще?

jcd ★★★★★ ()
Ответ на: комментарий от aleks_dsp

Сомнительное преимущество. Плюс все заявленные фичи легко проделываются в Developer Tools любого современного браузера.

snizovtsev ★★★★ ()
Ответ на: комментарий от anonymous

Реализовано сохранение заголовков и тела ответа и запроса. Для сохранения нужно ткнуть правой кнопкой мышью по нужной сессии в списке и выбрать в выпавшем контекстном меню, что, собственно, будем сохранять.

aleks_dsp ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.