Serwer testowy HTTP akceptuje żądania GET / POST

449

Potrzebuję serwera testowego na żywo, który akceptuje moje żądania podstawowych informacji za pośrednictwem HTTP GET, a także pozwala mi na POST (nawet jeśli tak naprawdę nic nie robi). Jest to wyłącznie do celów testowych.

Dobry przykład jest tutaj . Z łatwością akceptuje żądania GET, ale potrzebuję takiego, który akceptuje również żądania POST.

Czy ktoś wie o serwerze, że mogę również wysyłać fałszywe wiadomości testowe?

John Twigg
źródło
2
Czy chcesz, aby rejestrował POST?
Jared Farrish,
4
Myślę, że robi to, co chcesz. github.com/jar-o/dumdum Kod nie jest wymagany
jar

Odpowiedzi:

736

http://httpbin.org/

Powtarza dane użyte w zapytaniu dla dowolnego z tych typów:

Robert
źródło
Zwraca JSON opisujący twoje zapytanie.
tbraun
4
Czy istnieje również możliwość utworzenia lokalnego serwera httpbin?
user3280180,
4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app jak wspomniano to httpbin.org
HVNSweeting
to najlepsza odpowiedź / usługa, imo. stworzyłem prosty codepen pokazujący, jak go używać: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey
6
@therobyouknow kliknięcie linku wykonuje GET, ale jeśli wykonasz POST dla tego adresu URL, to zadziała. Spróbuj: curl -iX POST httpbin.org/postzwraca 200.
Robert
120

Istnieje http://ptsv2.com/

„Tutaj znajdziesz serwer, który odbiera dowolny test POST, który chcesz mu przekazać, i przechowuje zawartość do sprawdzenia.”

catbot
źródło
7
Ten jest naprawdę dobry, jeśli uruchamiasz żądania, które są wyzwalane ze zdalnego serwera, do którego wewnętrznych elementów nie masz dostępu, ponieważ zapisze to żądanie do późniejszego pobrania.
ozmo
2
Można także spróbować requestb.in - to także zapisuje wnioski do późniejszej kontroli.
Maksym Davydov,
Wiem dosłownie wszystko można by wykorzystać ... Ale czy istnieje „gettestserver”, który powinien pozostać na nogach przez długi czas?
byxor
2
W przeciwieństwie do httpbin.org/put , zwraca bardzo przydatną odpowiedź, która podaje szczegóły dotyczące twojego żądania. Szczególnie w przypadku przesyłania plików jest to bardzo pomocne, ponieważ możesz zobaczyć plik przesłany na serwer, co moim zdaniem nie jest możliwe na httpbin.org.
ViFI,
1
„Fajną” rzeczą w tym jest to, że nie używa TLS / HTTPS, co bardzo ułatwia debugowanie bajtów na drucie.
ntninja
40

http://requestb.in był podobny do wspomnianych już narzędzi, a także miał bardzo ładny interfejs użytkownika.

RequestBin daje ci adres URL, który będzie zbierał złożone do niego żądania i pozwoli ci je sprawdzić w przyjazny dla człowieka sposób. Użyj RequestBin, aby zobaczyć, co wysyła klient HTTP, lub sprawdzić i debugować żądania haka internetowego.

Chociaż został wycofany z dniem 21 marca 2018 r.

Przestaliśmy udostępniać publicznie hostowaną wersję RequestBin z powodu ciągłego nadużycia, które bardzo utrudniało niezawodne utrzymywanie witryny. Zobacz instrukcje dotyczące konfigurowania własnej instancji hostowanej.

Mikeyg36
źródło
3
PutsReq jest również podobny do RequestBin, ale umożliwia pisanie odpowiedzi za pomocą JS.
Pablo Cantero
2
RequestBin nie jest już dostępny.
AmokHuginnsson
29

Spójrz na PutsReq , jest podobny do innych, ale pozwala także pisać odpowiedzi, które chcesz za pomocą JavaScript.

Pablo Cantero
źródło
2
Świetna strona - wydaje się najbardziej intuicyjna i ma dobrą dokumentację, która pomaga ci sprawdzić takie rzeczy, jak typ żądania, nagłówki, dane formularza itp.
AlbatrossCafe
25

Webhook Tester to świetne narzędzie: https://webhook.site ( GitHub )

wprowadź opis zdjęcia tutaj

Ważne dla mnie, pokazało adres IP osoby żądającej, co jest przydatne, gdy trzeba dodać adres IP do białej listy, ale nie jest się pewnym, co to jest.

Patrick Quirk
źródło
Muszę sprawić, by treść odpowiedzi zawierała adres URL witryny, do której jest wysyłana. Ale witryna otrzymuje losowy identyfikator GUID po utworzeniu i wydaje się, że istnieje sposób na edycję odpowiedzi przed utworzeniem witryny po kliknięciu New URLprzycisku. Czy istnieje sposób utworzenia nowego adresu URL, a następnie edycji treści odpowiedzi?
Nick
Kciuk w górę dla https
Oleg Khalidov
23

Jeśli chcesz mieć lokalny serwer testowy, który akceptuje dowolny adres URL i po prostu zrzuca żądanie do konsoli, możesz użyć węzła:

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

Zapisz go w pliku „echo.js” i uruchom w następujący sposób:

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

Następnie możesz przesłać dane:

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

które będą pokazane na standardowym serwerze:

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
źródło
1
Cóż, wolę jeden liner w Linuksie: stackoverflow.com/a/52351480/895245
Ciro Santilli 郝海东 冠状 病 六四 事件
18

nc lokalny serwer testowy z jedną linią

Skonfiguruj lokalny serwer testowy w jednej linii pod Linuksem:

nc -kdl localhost 8000

Przykładowy program do tworzenia żądań w innej powłoce:

wget http://localhost:8000

wtedy w pierwszej powłoce pojawi się złożone żądanie:

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

ncz netcat-openbsdpakietu jest szeroko dostępny i wstępnie zainstalowany na Ubuntu.

Testowane na Ubuntu 18.04.

Ciro Santilli
źródło
2
nc -kdl localhost 8000będzie nasłuchiwał w pętli, więc nie ma potrzeby bash while. Jednak ncnie odpowie, więc zapytania testowe będą czekać do przekroczenia limitu czasu na brak odpowiedzi.
aks
3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donesprawi, że nc odpowie za każdym razem kodem 200 OK.
nikniknik
6

Oto jedno echo Listonosza: https://docs.postman-echo.com/

przykład:

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

odpowiedź:

{"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
źródło
5

Utwórz wybierz bezpłatny hosting i wpisz następujący kod

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

 foreach ($headers as $header => $value) {
     echo "<b>$header:</b> $value <br />\n";
 }
 ?>
greensuisse
źródło
4

https://www.mockable.io . Ma fajną funkcję uzyskiwania punktów końcowych bez logowania (konto tymczasowe 24h)

Mikrofon
źródło
uzgodnione ma fajne funkcje, dzięki którym możesz ustawić konkretną odpowiedź, której potrzebujesz. tj. 200/301, 401 itd. Dobrze, jeśli chcesz zasymulować błąd lub w moim przypadku nie kierować na stronę, gdy używasz rozwiązania w Angular, jeśli dane do renderowania tej strony nie wróciły (jeszcze)
fidev
2

Możesz nie potrzebować do tego żadnej strony internetowej, otwórz tylko przeglądarkę, naciśnij F12 aby uzyskać dostęp do narzędzi dla programistów> konsola, a następnie w konsoli napisać kod JavaScript, aby to zrobić.

Oto kilka sposobów, aby to osiągnąć:

Dla żądania GET: * .Korzystając z jQuery:

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

W przypadku żądania POST: 1. Za pomocą 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. Używając jQuery, dołącz i prześlij

     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. Korzystanie z czystego 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. Lub nawet używając 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 ();

(Uwaga: Ponieważ w kodzie mam znak powrotu (`), format kodu jest zniszczony, nie mam pojęcia, jak go poprawić)

Mohammad Musavi
źródło
1

Nie jestem pewien, czy ktokolwiek wziąłby tyle bólu na przetestowanie połączeń GET i POST. Wziąłem moduł Python Flask i napisałem funkcję, która robi coś podobnego do tego, co udostępnia @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"

Po uruchomieniu tego następuje:

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)

Teraz spróbujmy kilka połączeń. Korzystam z przeglądarki.

http://127.0.0.1:5000/method

To tylko metoda GET

http://127.0.0.1:5000/method/NotCorrect

To życzenie nie jest dostępne. Dostępne są następujące życzenia: [„aplikacja”, „argumenty”, „autoryzacja”, „plan”, „zestaw znaków”, „zamknij”, „pliki cookie”, „dane”, „data”, „punkt końcowy”, „rodowisko” ”,„ pliki ”,„ forma ”,„ nagłówki ”,„ host ”,„ json ”,„ metoda ”,„ typ mimetyczny ”,„ moduł ”,„ ścieżka ”,„ pragma ”,„ zasięg ”,„ polecający ”, „schemat”, „płytki”, „strumień”, „adres URL”, „wartości”]

http://127.0.0.1:5000/method/environ

{„wsgi.multiprocess”: False, „HTTP_COOKIE”: „csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq”, „SERVER_SOFTWARE”: „Werkzeug / 0.12.2”, „SCRIPT_NAME”: „” GETHEST '/ 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, jak 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 ':', tryb 'w' na 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
źródło
-13

Po prostu skonfiguruj sam. Skopiuj ten fragment kodu na swój serwer internetowy.

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

Po prostu opublikuj co chcesz na tej stronie. Gotowy.

Kapitan Hawaje
źródło
5
Chodzi o to, aby nie używać serwera. Na przykład, co jeśli chcesz wysłać pytanie do SO, ale twój serwer może nie być długo. OP prosi o coś stałego, takiego jak jsfiddle, którego można użyć do przetestowania lub zademonstrowania postu.
abalter