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?


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:


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


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 .


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.


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.


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]


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.


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

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";
 }
 ?>

4

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


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,


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.)


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 '}


-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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.