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


449

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

Хороший приклад тут . Він легко приймає GET-запити, але мені потрібен і той, хто приймає POST-запити.

Хтось знає про сервер, що я також можу надсилати фіктивні тестові повідомлення?


2
Ви хочете, щоб він реєстрував постів?
Джаред Фарріш

4
Я думаю, що це робить те, що ти хочеш. github.com/jar-o/dumdum Не потрібно код
jar

Відповіді:


736

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.
Роберт

120

Є http://ptsv2.com/

"Тут ви знайдете сервер, який отримує будь-яку POST, яку ви хочете надати, і зберігає вміст, який ви можете переглянути."


7
Цей дійсно хороший, якщо ви запускаєте запити, запущені з віддаленого сервера, до внутрішніх даних якого ви не маєте доступу, оскільки це збереже запит для подальшого пошуку.
озмо

2
Також можна спробувати requestb.in - він також зберігає запити для подальшого огляду.
Максим Давидов

Я знаю, що буквально все, що можна було використати ... Але чи існує "gettestserver", який, як очікується, тримається довго?
byxor

2
На відміну від httpbin.org/put , він повертає дуже корисну відповідь, яка дає детальну інформацію про ваш запит. Особливо у випадку завантаження файлів, це дуже корисно, оскільки ви можете бачити файл, завантажений на сервер, що, на мою думку, неможливо на httpbin.org.
ViFI

1
«Прохолодна» річ у цьому полягає в тому, що він не використовує TLS / HTTPS, що дуже спрощує налагодження байтів на дроті.
ntninja

40

http://requestb.in був подібний до вже згаданих інструментів, а також мав дуже приємний інтерфейс користувача.

RequestBin надає вам URL-адресу, яка збиратиме запити, зроблені до нього, і дозволяє вам перевіряти їх по-людськи. Використовуйте RequestBin, щоб побачити, що ваш HTTP-клієнт надсилає, або для перевірки та налагодження запитів на веб-камери.

Хоча це було припинено станом на 21 березня 2018 року.

Ми припинили публічно розміщену версію RequestBin через постійні зловживання, які ускладнювали надійне підтримання сайту. Будь ласка, перегляньте інструкції зі створення власного власного примірника.


3
PutsReq також схожий на RequestBin, але він дозволяє записувати відповіді, які ви хочете, за допомогою JS.
Пабло Cantero

2
RequestBin більше не доступний.
AmokHuginnsson

29

Погляньте на PutsReq , він схожий на інші, але він також дозволяє записувати відповіді, які ви хочете, використовуючи JavaScript.


2
Чудовий сайт - він здається найбільш інтуїтивним та має гарну документацію, яка допоможе вам перевірити такі речі, як тип запиту, заголовки, дані форми тощо.
AlbatrossCafe

25

Тестер Webhook - це чудовий інструмент: 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

який буде показаний у макеті сервера:

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
Чіро Сантіллі郝海东冠状病六四事件法轮功

18

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.


2
nc -kdl localhost 8000буде слухати в циклі, тому не потрібно баш while. Однак ncне буде відповідати, тому тестові запити будуть чекати до часу очікування невідповіді.
акс

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; doneзмушує nc відповісти кожен раз кодом 200 ОК.
nikniknik

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":{"...

5

Створіть, виберіть безкоштовний веб-хост і введіть наступний код

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

 foreach ($headers as $header => $value) {
     echo "<b>$header:</b> $value <br />\n";
 }
 ?>

4

https://www.mockable.io . Він має гарну особливість отримання кінцевих точок без входу (тимчасовий обліковий запис 24 години)


погоджено, має приємні функції, де ви можете встановити потрібну відповідь. тобто 200/301, 401 і т. д. Добре, якщо ви хочете імітувати помилку або в моєму випадку не переходити на сторінку при використанні рішення в Angular, якщо дані для відображення цієї сторінки не повернулися (поки)
fidev

3

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

Посилання Github : https://github.com/prabodhprakash/localTestingServer


2

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

Тут я ділюсь деякими способами досягти цього:

Для отримання запиту: *. Використання 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 = новий 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.1what000/method

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

http://127.0.0.1what000/method/NotCorrect

Це бажання недоступне. Нижче наведені доступні побажання: ['application', 'args', 'Authorization', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'environment ',' файли ',' форма ',' заголовки ',' хост ',' json ',' метод ',' mimetype ',' module ',' path ',' pragma ',' range ',' referencerer ', 'схема', 'неглибоко', 'потік', 'URL', 'значення']

http://127.0.0.1what000/method/environ

{ 'Wsgi.multiprocess': false, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCRIPT_NAME': '', 'REQUEST_METHOD': 'GET', 'PATH_INFO': '/ 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 ':' підтримуйте життя ',' 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 ': Невірно,' HTTP_UPGRADE_INSECURE_REQUESTS ':' 1 ',' HTTP_ACCEPT ':' текст / html, application / xhtml + xml, application / xml; q = 0,9, зображення / webp, /; q = 0.8 ',' wsgi.version ': (1, 0),' wsgi.run_once ': Невірно,' 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

Просто налаштуйте один. Скопіюйте цей фрагмент на свій веб-сервер.

відлуння "<pre>";
print_r ($ _ POST);
ехо "</pre>";

Просто опублікуйте, що ви хочете, на цій сторінці. Зроблено.


5
Справа в тому, що не потрібно використовувати сервер. Наприклад, що робити, якщо ви хочете опублікувати запитання на SO, але ваш сервер може не довго знаходитися. ОП просить щось постійне, наприклад jsfiddle, яке можна використовувати для тестування чи демонстрації посту.
abalter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.