Server di prova HTTP che accetta richieste GET / POST


449

Ho bisogno di un server di test in tempo reale che accetti le mie richieste di informazioni di base tramite HTTP GET e mi permetta anche di postare (anche se in realtà non sta facendo nulla). Questo è interamente a scopo di test.

Un buon esempio è qui . Accetta facilmente richieste GET, ma ne ho bisogno anche per uno che accetta richieste POST.

Qualcuno sa di un server che posso inviare anche messaggi di test fittizi?


2
Vuoi che registri i POST?
Jared Farrish,

4
Questo fa quello che vuoi, penso. github.com/jar-o/dumdum Nessun codice richiesto
jar

Risposte:


736

http://httpbin.org/

Fa eco ai dati utilizzati nella tua richiesta per uno di questi tipi:


Restituisce un JSON che descrive la richiesta che hai fatto.
tbraun,

4
C'è anche la possibilità di creare un server httpbin locale?
user3280180,

4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app come menzionato è httpbin.org
HVNSweeting

questa è la migliore risposta / servizio, imo. ho creato un codice semplice che mostra come usarlo: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

6
@therobyouknow facendo clic sul collegamento si ottiene un GET, ma se si esegue un POST a quell'URL funziona. Prova: curl -iX POST httpbin.org/postrestituisce un 200.
Robert

120

C'è http://ptsv2.com/

"Qui troverai un server che riceve qualsiasi POST che desideri dare e memorizza i contenuti per la revisione."


7
Questo è davvero buono se stai eseguendo richieste che vengono attivate da un server remoto a cui non hai accesso internals, poiché salverà la richiesta per il successivo recupero.
ozmo,

2
Inoltre si può provare requestb.in - anche salva le richieste per ispezioni successive.
Maksym Davydov

So che letteralmente si potrebbe usare qualsiasi cosa ... Ma esiste un "server di server" che dovrebbe rimanere attivo per molto tempo?
byxor,

2
A differenza di httpbin.org/put , restituisce una risposta molto utile che fornisce dettagli sulla tua richiesta. Soprattutto in caso di caricamento di file, è molto utile in quanto puoi vedere il tuo file caricato sul server che credo non sia possibile su httpbin.org.
ViFI,

1
La cosa "interessante" è che non utilizza TLS / HTTPS, il che rende molto più semplice il debug dei byte sul filo.
ntninja,

40

http://requestb.in era simile agli strumenti già menzionati e aveva anche un'interfaccia utente molto bella.

RequestBin ti fornisce un URL che raccoglierà le richieste fatte e ti consentirà di ispezionarle in modo umano. Usa RequestBin per vedere cosa sta inviando il tuo client HTTP o per ispezionare ed eseguire il debug delle richieste di webhook.

Anche se è stato sospeso dal 21 marzo 2018.

Abbiamo sospeso la versione di RequestBin ospitata pubblicamente a causa di abusi continui che hanno reso molto difficile mantenere il sito affidabile. Consulta le istruzioni per configurare la tua istanza ospitata autonomamente.


3
Anche PutsReq è simile a RequestBin, ma ti consente di scrivere le risposte che desideri con JS.
Pablo Cantero,

2
RequestBin non è più disponibile.
AmokHuginnsson,

29

Dai un'occhiata a PutsReq , è simile agli altri, ma ti consente anche di scrivere le risposte che desideri utilizzando JavaScript.


2
Ottimo sito - sembra il più intuitivo e ha una buona documentazione che ti aiuta a verificare cose come tipo di richiesta, intestazioni, dati del modulo, ecc.
AlbatrossCafe

25

Webhook Tester è un ottimo strumento: https://webhook.site ( GitHub )

inserisci qui la descrizione dell'immagine

Importante per me, ha mostrato l'IP del richiedente, che è utile quando è necessario inserire nella whitelist un indirizzo IP ma non si è sicuri di cosa si tratti.


Devo fare in modo che il corpo della risposta contenga l'URL del sito in cui è pubblicato. Ma il sito ottiene un GUID casuale dopo la sua creazione e sembra esserci un modo per modificare la risposta prima che il sito venga creato quando si fa clic sul New URLpulsante. Esiste un modo per creare un nuovo URL e successivamente modificare il corpo della risposta?
Nick,

Pollice in su per https
Oleg Khalidov

23

Se si desidera un server di test locale che accetta qualsiasi URL e scarica semplicemente la richiesta sulla console, è possibile utilizzare il nodo:

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

Salvalo in un file 'echo.js' ed eseguilo come segue:

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

È quindi possibile inviare i dati:

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

che verrà mostrato nello stdout del server:

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
Beh, io preferisco un uno di linea, quando su Linux: stackoverflow.com/a/52351480/895245
Ciro Santilli郝海东冠状病六四事件法轮功

18

nc server di test locale one-liner

Installa un server di test locale su una riga sotto Linux:

nc -kdl localhost 8000

Creatore di richiesta di esempio su un'altra shell:

wget http://localhost:8000

quindi sulla prima shell appare la richiesta fatta:

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

ncdal netcat-openbsdpacchetto è ampiamente disponibile e preinstallato su Ubuntu.

Testato su Ubuntu 18.04.


2
nc -kdl localhost 8000ascolterà in loop, quindi non c'è bisogno di bash while. Tuttavia, ncnon risponderà, quindi le query di test attenderanno il timeout per la mancata risposta.
aprile

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donefarà rispondere nc ogni volta con un codice di 200 OK.
nikniknik,

6

Ecco un eco Postman: https://docs.postman-echo.com/

esempio:

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

risposta:

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

Crea scegli un host web gratuito e inserisci il seguente codice

 <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 . Ha una bella funzione per ottenere endpoint senza accesso (account temporaneo 24 ore)


concordato ha delle belle funzionalità nelle quali puoi impostare la risposta specifica che desideri. cioè 200/301, 401 ecc. Buono se si desidera simulare un errore o nel mio caso non instradare a una pagina quando si utilizza una risoluzione in Angolare se i dati per renderizzare quella pagina non sono tornati (ancora)
fidev


2

Potrebbe non essere necessario alcun sito Web per questo, apri solo il browser, premi F12per accedere agli strumenti di sviluppo> console, quindi nella console scrivi un codice JavaScript per farlo.

Qui condivido alcuni modi per farlo:

Per la richiesta GET: * .Usando jQuery:

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

Per la richiesta POST: 1. Utilizzando 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. Utilizzando jQuery, aggiungi e invia

     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. Utilizzando JavaScript puro:

    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. O anche usando 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 ();

(Nota: dato che ho il carattere backtick (`) nel mio codice il formato del codice è rovinato, non ho idea di come correggerlo)


1

Non sono sicuro se qualcuno si prenderà così tanta pena per testare le chiamate GET e POST. Ho preso il modulo Python Flask e ho scritto una funzione che fa qualcosa di simile a ciò che ha condiviso @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"

Quando eseguo questo, questo segue:

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)

Ora proviamo alcune chiamate. Sto usando il browser.

http://127.0.0.1:5000/method

Questo è solo un metodo GET

http://127.0.0.1:5000/method/NotCorrect

Questo desiderio non è disponibile. I seguenti sono i desideri disponibili: ['application', 'args', 'autorisation', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'ambi ',' files ',' form ',' headers ',' host ',' json ',' method ',' mimetype ',' module ',' path ',' pragma ',' range ',' referrer ', 'schema', 'superficiale', 'flusso', 'url', 'valori']

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess': False, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCR_T': '' '', '' '', '' '' '/ 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, come 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 ': Falso,' wsgi.errors ':', modalità 'w' a 0x0000000002042150>, 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' en-US, en; q = 0.8 ',' HTTP_ACCEPT_ENCODING ':' gzip, deflate, sdch, br '}


-13

Basta crearne uno da soli. Copia questo frammento sul tuo server web.

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

Pubblica ciò che vuoi su quella pagina. Fatto.


5
Il punto è non dover usare un server. Ad esempio, cosa succede se si desidera inviare una domanda a SO, ma il server potrebbe non essere in circolazione a lungo. L'OP chiede qualcosa di permanente come jsfiddle che può essere usato per testare o dimostrare post.
abalter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.