Тестовый сервер HTTP, принимающий запросы GET / POST

450

Мне нужен живой тестовый сервер, который принимает мои запросы на базовую информацию через HTTP GET, а также позволяет мне выполнять POST (даже если он действительно ничего не делает). Это полностью для целей тестирования.

Хороший пример здесь . Он легко принимает запросы GET, но мне нужен и тот, который принимает запросы POST.

Кто-нибудь знает о сервере, на котором я тоже могу отправлять фиктивные тестовые сообщения?

Джон Твигг
источник
2
Вы хотите, чтобы это регистрировало сообщения?
Джаред Фарриш
4
Это делает то, что вы хотите, я думаю. github.com/jar-o/dumdum Код не требуется
jar

Ответы:

738

http://httpbin.org/

Это повторяет данные, используемые в вашем запросе для любого из этих типов:

Роберт
источник
Он возвращает JSON с описанием вашего запроса.
tbraun
4
Есть ли возможность создать локальный httpbin-сервер?
user3280180
4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app как уже упоминалось: httpbin.org
HVNSweeting
Это лучший ответ / услуга, IMO. я создал простой кодовый блок, показывающий, как его использовать: codepen.io/nickleus/pen/qOjOGe
Ник Хамфри
6
@therobyouknow нажатие на ссылку выполняет GET, но если вы выполняете POST для этого URL, это работает. Попробуйте: curl -iX POST httpbin.org/postон возвращает 200.
Роберт
121

Есть http://ptsv2.com/

«Здесь вы найдете сервер, который получает любой POST, который вы хотите передать, и сохраняет содержимое для просмотра».

catbot
источник
7
Это действительно хорошо, если вы запускаете запросы, которые запускаются с удаленного сервера, к внутренностям которого у вас нет доступа, поскольку он сохранит запрос для последующего извлечения.
Озмо
2
Также можно попробовать requestb.in - он также сохраняет запросы для последующей проверки.
Максим Давыдов
Я знаю, буквально все можно использовать ... Но есть ли "gettestserver", который, как ожидается, будет оставаться в течение длительного времени?
августа
2
В отличие от httpbin.org/put , он возвращает очень полезный ответ, который дает подробную информацию о вашем запросе. Особенно в случае загрузки файла, это очень полезно, так как вы можете видеть, что ваш файл загружен на сервер, что, я считаю, невозможно на httpbin.org.
ViFI 10.10.16
1
Крутая вещь в этом заключается в том, что он не использует TLS / HTTPS, что упрощает отладку байтов по проводам.
ntninja
40

http://requestb.in был похож на уже упомянутые инструменты и также имел очень приятный интерфейс.

RequestBin дает вам URL, который будет собирать запросы, сделанные на него, и позволит вам проверить их в удобной для человека форме. Используйте RequestBin, чтобы увидеть, что отправляет ваш HTTP-клиент, или проверить и отладить запросы webhook.

Хотя это было прекращено с 21 марта 2018 года.

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

Mikeyg36
источник
3
PutsReq также похож на RequestBin, но он позволяет вам писать ответы, которые вы хотите с JS.
Пабло Кантеро
2
RequestBin больше не доступен.
AmokHuginnsson
29

Посмотрите на PutsReq , он похож на другие, но он также позволяет писать ответы, которые вы хотите, используя JavaScript.

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

Webhook Tester - отличный инструмент: https://webhook.site ( GitHub )

введите описание изображения здесь

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

Патрик Квирк
источник
Мне нужно, чтобы тело ответа содержало URL сайта, на котором размещен сайт. Но сайт получает случайный GUID после его создания, и кажется, что есть способ отредактировать ответ до создания сайта, когда вы нажимаете New URLкнопку. Есть ли способ создать новый URL, а затем отредактировать тело ответа?
Ник
Большой палец вверх для https
Олег Халидов
23

Если вам нужен локальный тестовый сервер, который принимает любой URL и просто выводит запрос на консоль, вы можете использовать узел:

const http = require("http");

const hostname = "0.0.0.0";
const port = 3000;

const server = http.createServer((req, res) => {
  console.log(`\n${req.method} ${req.url}`);
  console.log(req.headers);

  req.on("data", function(chunk) {
    console.log("BODY: " + chunk);
  });

  res.statusCode = 200;
  res.setHeader("Content-Type", "text/plain");
  res.end("Hello World\n");
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://localhost:${port}/`);
});

Сохраните его в файле echo.js и запустите его следующим образом:

$ node echo.js
Server running at http://localhost:3000/

Затем вы можете отправить данные:

$ curl -d "[1,2,3]" -XPOST http://localhost:3000/foo/bar

который будет показан в stdout сервера:

POST /foo/bar
{ host: 'localhost:3000',
  'user-agent': 'curl/7.54.1',
  accept: '*/*',
  'content-length': '7',
  'content-type': 'application/x-www-form-urlencoded' }
BODY: [1,2,3]
Уилфред Хьюз
источник
1
Что ж, я предпочитаю один вкладыш в Linux: stackoverflow.com/a/52351480/895245
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
19

nc однострочный локальный тестовый сервер

Настройте локальный тестовый сервер в одной строке под Linux:

nc -kdl localhost 8000

Создатель образца запроса на другой оболочке:

wget http://localhost:8000

затем в первой оболочке вы видите, что сделанный запрос появляется:

GET / HTTP/1.1
User-Agent: Wget/1.19.4 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: localhost:8000
Connection: Keep-Alive

ncиз netcat-openbsdпакета широко доступен и предварительно установлен на Ubuntu.

Проверено на Ubuntu 18.04.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
источник
2
nc -kdl localhost 8000будет слушать в цикле, так что нет необходимости в bash while. Однако ncотвечать не будет, поэтому тестовые запросы будут ждать до истечения времени ожидания отсутствия ответа.
AKS
3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; doneзаставит nc ответить кодом 200 OK каждый раз.
Никникник
6

Вот одно эхо почтальона: https://docs.postman-echo.com/

пример:

curl --request POST \
  --url https://postman-echo.com/post \
  --data 'This is expected to be sent back as part of response body.'

ответ:

{"args":{},"data":"","files":{},"form":{"This is expected to be sent back as part of response body.":""},"headers":{"host":"postman-echo.com","content-length":"58","accept":"*/*","content-type":"application/x-www-form-urlencoded","user-agent":"curl/7.54.0","x-forwarded-port":"443","x-forwarded-proto":"https"},"json":{"...
rogerdpack
источник
5

Создать выберите бесплатный веб-хостинг и введите следующий код

 <h1>Request Headers</h1>
 <?php
 $headers = apache_request_headers();

 foreach ($headers as $header => $value) {
     echo "<b>$header:</b> $value <br />\n";
 }
 ?>
greensuisse
источник
4

https://www.mockable.io . Это хорошая функция получения конечных точек без входа в систему (24-часовой временной аккаунт)

Майк
источник
Согласен, есть хорошие функции, где вы можете установить конкретный ответ, который вам требуется. т.е. 200/301, 401 и т. д. Хорошо, если вы хотите смоделировать ошибку или в моем случае не маршрутизировать страницу при использовании разрешения в Angular, если данные для визуализации этой страницы еще не вернулись (пока)
fidev
3

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

Ссылка на Github : https://github.com/prabodhprakash/localTestingServer

prabodhprakash
источник
2

Для этого вам может не понадобиться какой-либо веб-сайт, просто откройте браузер, нажмите, F12чтобы получить доступ к инструментам разработчика> консоль, а затем в консоли напишите некоторый код JavaScript, чтобы сделать это.

Здесь я поделюсь некоторыми способами сделать это:

Для запроса GET: *. Использование jQuery:

$.get("http://someurl/status/?messageid=597574445", function(data, status){
    console.log(data, status);
  });

Для запроса POST: 1. Используя jQuery $ .ajax:

var url= "http://someurl/",
        api_key = "6136-bc16-49fb-bacb-802358",
        token1 = "Just for test",
        result;
    $.ajax({
          url: url,
          type: "POST",
          data: {
            api_key: api_key,
            token1: token1
          },
        }).done(function(result) {
                console.log("done successfuly", result);
        }).fail(function(error) {

          console.log(error.responseText, error);

        });
  1. Используя jQuery, добавляйте и отправляйте

     var merchantId = "AA86E",
            token = "4107120133142729",
            url = "https://payment.com/Index";
    
        var form = `<form id="send-by-post" method="post" action="${url}">
                                    <input id="token" type="hidden" name="token" value="${merchantId}"/>
                                    <input id="merchantId" name="merchantId" type="hidden" value="${token}"/>
                                    <button type="submit" >Pay</button>
                        </div>
                    </form> `; 
        $('body').append(form);
        $("#send-by-post").submit();//Or $(form).appendTo("body").submit();
    
    1. Используя чистый JavaScript:

    var api_key = "73736-bc16-49fb-bacb-643e58", recipient = "095552565", token1 = "4458", url = 'http://smspanel.com/send/';

var form = `<form id="send-by-post" method="post" action="${url}"> <input id="api_key" type="hidden" name="api_key" value="${api_key}"/> <input id="recipient" type="hidden" name="recipient" value="${recipient}"/> <input id="token1" name="token1" type="hidden" value="${token1}"/> <button type="submit" >Send</button> </div> </form>`;

document.querySelector("body").insertAdjacentHTML('beforeend',form);
document.querySelector("#send-by-post").submit();
  1. Или даже используя ASP.Net:

    var url = " https://Payment.com/index "; Response.Clear (); var sb = new System.Text.StringBuilder ();

    sb.append ( ""); sb.AppendFormat ( ""); sb.AppendFormat ("", url); sb.AppendFormat ("", "C668"); sb.AppendFormat ("", "22720281459"); sb.append ( ""); sb.append ( ""); sb.append ( ""); Response.Write (sb.ToString ()); Response.End ();

(Примечание: так как в моем коде есть символ обратной галочки (`), формат кода разрушен, я понятия не имею, как это исправить)

Мухаммед Мусави
источник
1

Я не уверен, что кому-то придется так сильно испытывать вызовы GET и POST. Я взял модуль Python Flask и написал функцию, которая делает нечто похожее на то, что делил @Robert.

from flask import Flask, request
app = Flask(__name__)

@app.route('/method', methods=['GET', 'POST'])
@app.route('/method/<wish>', methods=['GET', 'POST'])
def method_used(wish=None):
    if request.method == 'GET':
        if wish:
            if wish in dir(request):
                ans = None
                s = "ans = str(request.%s)" % wish
                exec s
                return ans
            else:
                return 'This wish is not available. The following are the available wishes: %s' % [method for method in dir(request) if '_' not in method]
        else:
            return 'This is just a GET method'
    else:
        return "You are using POST"

Когда я запускаю это, это следующее:

C:\Python27\python.exe E:/Arindam/Projects/Flask_Practice/first.py
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 581-155-269
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Теперь давайте попробуем несколько звонков. Я использую браузер.

http://127.0.0.1:5000/method

Это просто метод GET

http://127.0.0.1:5000/method/NotCorrect

Это желание не доступно. Ниже перечислены доступные пожелания: ['application', 'args', 'authorization', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'environment ',' files ',' form ',' headers ',' host ',' json ',' method ',' mimetype ',' module ',' path ',' pragma ',' range ',' referrer ', 'схема', 'мелкий', 'поток', 'url', 'значения']

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess': False, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCRIPT_NHO' 'PATH' GHO ':: '/ method / environment', 'SERVER_PROTOCOL': 'HTTP / 1.1', 'QUERY_STRING': '', 'werkzeug.server.shutdown':, 'HTTP_USER_AGENT': 'Mozilla / 5.0 (Windows NT 6.1; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 54.0.2840.71 Safari / 537.36 ',' HTTP_CONNECTION ':' keep-alive ',' SERVER_NAME ':' 127.0.0.1 ',' REMOTE_PORT ': 49569,' wsgi.url_scheme ':' http ',' SERVER_PORT ':' 5000 ',' werkzeug.request ':,' wsgi.input ':,' HTTP_HOST ':' 127.0.0.1: 5000 ',' wsgi.multithread ': False,' HTTP_UPGRADE_INSECURE_REQUESTS ':' 1 ',' HTTP_ACCEPT ':' text / html, application / xhtml + xml, application / xml; q = 0,9, image / webp, /; q = 0,8 ',' wsgi.version ': (1, 0),' wsgi.run_once ': False,' wsgi.errors ':', режим 'w' в 0x0000000002042150>, 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' en-US, en; q = 0,8 ',' HTTP_ACCEPT_ENCODING ':' gzip, deflate, sdch, br '}

Ариндам Ройчоудхури
источник
-13

Просто настройте себя. Скопируйте этот фрагмент на ваш веб-сервер.

echo "<pre>";
print_r ($ _ POST);
echo "</ pre>";

Просто опубликуйте то, что вы хотите на этой странице. Выполнено.

Капитан гавайи
источник
5
Дело в том, чтобы не использовать сервер. Например, что делать, если вы хотите отправить вопрос в SO, но ваш сервер может долго не работать. ОП запрашивает что-то постоянное, такое как jsfiddle, которое можно использовать для тестирования или демонстрации поста.
abalter