HTTP-Testserver, der GET / POST-Anforderungen akzeptiert

449

Ich benötige einen Live-Testserver, der meine Anfragen nach grundlegenden Informationen über HTTP GET akzeptiert und mir auch das POST ermöglicht (auch wenn es wirklich nichts tut). Dies dient ausschließlich Testzwecken.

Ein gutes Beispiel ist hier . Es akzeptiert leicht GET-Anfragen, aber ich brauche eine, die auch POST-Anfragen akzeptiert.

Kennt jemand einen Server, auf dem ich auch Dummy-Testnachrichten senden kann?

John Twigg
quelle
2
Möchten Sie, dass POSTs protokolliert werden?
Jared Farrish
4
Das macht was du willst, denke ich. github.com/jar-o/dumdum Kein Code erforderlich
jar

Antworten:

736

http://httpbin.org/

Es gibt die Daten wieder, die in Ihrer Anfrage für einen dieser Typen verwendet wurden:

Robert
quelle
Es wird ein JSON zurückgegeben, der die von Ihnen gestellte Anforderung beschreibt.
Tbraun
4
Gibt es auch die Möglichkeit, einen lokalen httpbin-Server zu erstellen?
user3280180
4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app wie erwähnt ist httpbin.org
HVNSweeting
Dies ist die beste Antwort / Service, imo. Ich habe einen einfachen Codepen erstellt, der zeigt, wie man ihn benutzt: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey
6
@therobyouknow Klicken Sie auf den Link, um ein GET durchzuführen, aber wenn Sie einen POST zu dieser URL durchführen, funktioniert es. Versuchen Sie: curl -iX POST httpbin.org/postes gibt eine 200 zurück.
Robert
120

Es gibt http://ptsv2.com/

"Hier finden Sie einen Server, der jeden POST empfängt, den Sie ihm geben möchten, und den Inhalt speichert, den Sie überprüfen können."

Catbot
quelle
7
Dieser ist wirklich gut, wenn Sie Anforderungen ausführen, die von einem Remote-Server ausgelöst werden, auf dessen Interna Sie keinen Zugriff haben, da die Anforderung für den späteren Abruf gespeichert wird.
Ozmo
2
Man kann auch requestb.in ausprobieren - es speichert auch Anfragen für eine spätere Überprüfung.
Maksym Davydov
Ich weiß buchstäblich, dass alles verwendet werden könnte ... Aber gibt es einen "gettestserver", von dem erwartet wird, dass er lange wach bleibt?
Byxor
2
Im Gegensatz zu httpbin.org/put wird eine sehr nützliche Antwort zurückgegeben, die Details zu Ihrer Anfrage enthält. Insbesondere beim Hochladen von Dateien ist dies sehr hilfreich, da Sie sehen können, wie Ihre Datei auf den Server hochgeladen wird, was meiner Meinung nach auf httpbin.org nicht möglich ist.
ViFI
1
Das „Coole“ daran ist, dass TLS / HTTPS nicht verwendet wird, was das Debuggen der Bytes auf Draht sehr erleichtert.
Ntninja
40

http://requestb.in ähnelte den bereits erwähnten Tools und hatte auch eine sehr schöne Benutzeroberfläche.

RequestBin gibt Ihnen eine URL, über die an Sie gerichtete Anfragen gesammelt und auf menschenfreundliche Weise überprüft werden können. Verwenden Sie RequestBin, um zu sehen, was Ihr HTTP-Client sendet, oder um Webhook-Anforderungen zu überprüfen und zu debuggen.

Obwohl es zum 21. März 2018 eingestellt wurde.

Wir haben die öffentlich gehostete Version von RequestBin wegen anhaltenden Missbrauchs eingestellt, der es sehr schwierig machte, die Website zuverlässig aufrechtzuerhalten. Weitere Informationen zum Einrichten Ihrer eigenen selbst gehosteten Instanz finden Sie in den Anweisungen .

Mikeyg36
quelle
3
PutsReq ähnelt auch RequestBin, ermöglicht es Ihnen jedoch, die gewünschten Antworten mit JS zu schreiben.
Pablo Cantero
2
RequestBin ist nicht mehr verfügbar.
AmokHuginnsson
29

Schauen Sie sich PutsReq an , es ähnelt den anderen, aber Sie können auch die gewünschten Antworten mit JavaScript schreiben.

Pablo Cantero
quelle
2
Großartige Website - sie scheint die intuitivste zu sein und verfügt über eine gute Dokumentation, mit deren Hilfe Sie nach Anfragetyp, Kopfzeilen, Formulardaten usw.
AlbatrossCafe
25

Webhook Tester ist ein großartiges Tool: https://webhook.site ( GitHub )

Geben Sie hier die Bildbeschreibung ein

Wichtig für mich, es zeigte die IP des Anforderers an, was hilfreich ist, wenn Sie eine IP-Adresse auf die Whitelist setzen müssen, sich aber nicht sicher sind, um welche es sich handelt.

Patrick Quirk
quelle
Ich muss dafür sorgen, dass der Antworttext die URL der Site enthält, auf der gepostet wird. Die Site erhält jedoch nach ihrer Erstellung eine zufällige GUID, und es scheint nur eine Möglichkeit zu geben, die Antwort zu bearbeiten, bevor die Site erstellt wird, wenn Sie auf die New URLSchaltfläche klicken . Gibt es eine Möglichkeit, eine neue URL zu erstellen und anschließend den Antworttext zu bearbeiten?
Nick
Daumen hoch für https
Oleg Khalidov
23

Wenn Sie einen lokalen Testserver benötigen, der eine beliebige URL akzeptiert und die Anforderung nur an die Konsole ausgibt, können Sie den folgenden Knoten verwenden:

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}/`);
});

Speichern Sie es in einer Datei 'echo.js' und führen Sie es wie folgt aus:

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

Sie können dann Daten einreichen:

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

welches im stdout des Servers angezeigt wird:

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]
Wilfred Hughes
quelle
1
Nun, ich bevorzuge einen Einzeiler unter
Ciro Santilli 法轮功 冠状 病. 事件 法轮功
18

nc Einzeiliger lokaler Testserver

Richten Sie einen lokalen Testserver in einer Zeile unter Linux ein:

nc -kdl localhost 8000

Beispielanforderungshersteller auf einer anderen Shell:

wget http://localhost:8000

Dann wird auf der ersten Shell die angeforderte Anforderung angezeigt:

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

nc von dem netcat-openbsd Paket ist weit verbreitet und unter Ubuntu vorinstalliert.

Getestet unter Ubuntu 18.04.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
quelle
2
nc -kdl localhost 8000wird in einer Schleife hören, so dass keine Notwendigkeit für die Bash while. Da ncjedoch nicht geantwortet wird, warten die Testabfragen bis zum Timeout auf die Nichtantwort.
Aks
3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donewird nc jedes Mal mit einem 200 OK Code antworten lassen.
Nikniknik
6

Hier ist ein Postman-Echo: https://docs.postman-echo.com/

Beispiel:

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

Antwort:

{"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
quelle
5

Erstellen Wählen Sie einen kostenlosen Webhost und geben Sie den folgenden Code ein

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

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

https://www.mockable.io . Es hat eine nette Funktion, Endpunkte ohne Login zu bekommen (temporäres 24-Stunden-Konto)

Mike
quelle
vereinbart hat nette Funktionen, mit denen Sie die spezifische Antwort einstellen können, die Sie benötigen. dh 200/301, 401 usw. Gut, wenn Sie einen Fehler simulieren möchten oder in meinem Fall bei Verwendung einer Auflösung in Angular nicht zu einer Seite
weiterleiten möchten,
3

Ich habe einen hackbaren lokalen Open-Source-Testserver erstellt, den Sie in wenigen Minuten zum Laufen bringen können. Sie können neue APIs erstellen, Ihre eigene Antwort definieren und sie auf beliebige Weise hacken.

Github-Link : https://github.com/prabodhprakash/localTestingServer

Prabodhprakash
quelle
2

Möglicherweise benötigen Sie dafür keine Website. Öffnen Sie nur den Browser, drücken Sie F12, um Zugriff auf Entwicklertools> Konsole zu erhalten, und schreiben Sie dazu in die Konsole JavaScript-Code.

Hier teile ich einige Möglichkeiten, um dies zu erreichen:

Für GET-Anforderung: * .Verwenden von jQuery:

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

Für POST-Anforderungen: 1. Verwenden von 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. Anhängen und Senden mit 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. Verwenden von reinem 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. Oder sogar mit 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 ();

(Hinweis: Da ich in meinem Code ein Backtick-Zeichen (`) habe, dessen Codeformat ruiniert ist, habe ich keine Ahnung, wie ich es korrigieren soll.)

Mohammad Musavi
quelle
1

Ich bin mir nicht sicher, ob jemand so viel Mühe auf sich nehmen würde, um GET- und POST-Anrufe zu testen. Ich habe das Python Flask-Modul genommen und eine Funktion geschrieben, die etwas Ähnliches wie das macht, was @Robert geteilt hat.

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"

Wenn ich dies ausführe, folgt Folgendes:

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)

Versuchen wir jetzt einige Anrufe. Ich benutze den Browser.

http://127.0.0.1:5000/method

Dies ist nur eine GET-Methode

http://127.0.0.1:5000/method/NotCorrect

Dieser Wunsch ist nicht verfügbar. Die folgenden Wünsche sind verfügbar: ['Anwendung', 'Argumente', 'Autorisierung', 'Blaupause', 'Zeichensatz', 'Schließen', 'Cookies', 'Daten', 'Datum', 'Endpunkt', 'Umgebung ',' files ',' form ',' headers ',' host ',' json ',' method ',' mimetype ',' module ',' path ',' pragma ',' range ',' referrer ', 'Schema', 'flach', 'Strom', 'URL', 'Werte']

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess': False, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCRIPT_NAME': '' '' '' '' '' '' ' '/ method / environ', '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, wie 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,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 ':', Modus 'w' bei 0x0000000002042150>, 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' en-US, en; q = 0,8 ',' HTTP_ACCEPT_ENCODING ':' gzip, deflate, sdch, br '}

Arindam Roychowdhury
quelle
-13

Richten Sie einfach selbst eine ein. Kopieren Sie dieses Snippet auf Ihren Webserver.

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

Posten Sie einfach, was Sie wollen, auf dieser Seite. Erledigt.

Kapitän Hawaii
quelle
5
Es geht darum, keinen Server verwenden zu müssen. Was ist zum Beispiel, wenn Sie eine Frage an SO senden möchten, Ihr Server jedoch möglicherweise nicht lange verfügbar ist? Das OP bittet um etwas Dauerhaftes wie jsfiddle, mit dem der Beitrag getestet oder demonstriert werden kann.
Abalter