Serveur de test HTTP acceptant les requêtes GET / POST


449

J'ai besoin d'un serveur de test en direct qui accepte mes demandes d'informations de base via HTTP GET et me permet également de POST (même si cela ne fait vraiment rien). Ceci est entièrement à des fins de test.

Un bon exemple est ici . Il accepte facilement les demandes GET, mais j'en ai besoin d'une qui accepte également les demandes POST.

Quelqu'un connaît-il un serveur auquel je peux également envoyer des messages de test factices?


2
Voulez-vous qu'il enregistre les POST?
Jared Farrish

4
C'est ce que tu veux, je pense. github.com/jar-o/dumdum Aucun code requis
pot

Réponses:


736

http://httpbin.org/

Il fait écho aux données utilisées dans votre demande pour l'un de ces types:


Il renvoie un JSON décrivant la demande que vous avez faite.
tbraun

4
Est-il également possible de créer un serveur httpbin local?
user3280180

4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app comme mentionné est httpbin.org
HVNSweeting

c'est la meilleure réponse / service, imo. j'ai créé un simple codepen montrant comment l'utiliser: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

6
@therobyouknow en cliquant sur le lien effectue un GET, mais si vous effectuez un POST sur cette URL, cela fonctionne. Essayez: curl -iX POST httpbin.org/postil retourne un 200.
Robert

120

Il y a http://ptsv2.com/

"Ici, vous trouverez un serveur qui reçoit tous les messages que vous souhaitez lui donner et stocke le contenu que vous pouvez consulter."


7
Celui-ci est vraiment bon si vous exécutez des demandes déclenchées à partir d'un serveur distant dont vous n'avez pas accès aux éléments internes, car il enregistrera la demande pour une récupération ultérieure.
ozmo

2
On peut également essayer requestb.in - il enregistre également les demandes pour une inspection ultérieure.
Maksym Davydov

Je sais littéralement que tout peut être utilisé ... Mais y a-t-il un "gettestserver" qui devrait rester en place pendant longtemps?
byxor

2
Contrairement à httpbin.org/put , il renvoie une réponse très utile qui donne des détails sur votre demande. Surtout en cas de téléchargement de fichier, il est très utile car vous pouvez voir votre fichier téléchargé sur le serveur qui, je pense, n'est pas possible sur httpbin.org.
ViFI

1
La chose «cool» à ce sujet est qu'elle n'utilise pas TLS / HTTPS, ce qui facilite le débogage des octets sur le fil.
ntninja

40

http://requestb.in était similaire aux outils déjà mentionnés et avait également une très belle interface utilisateur.

RequestBin vous donne une URL qui collectera les demandes qui lui seront adressées et vous permettra de les inspecter de manière conviviale. Utilisez RequestBin pour voir ce que votre client HTTP envoie ou pour inspecter et déboguer les demandes de webhook.

Bien qu'il ait été interrompu le 21 mars 2018.

Nous avons abandonné la version hébergée publiquement de RequestBin en raison d'abus continus qui ont rendu très difficile la maintenance fiable du site. Veuillez consulter les instructions pour configurer votre propre instance auto-hébergée.


3
PutsReq est également similaire à RequestBin, mais il vous permet d'écrire les réponses que vous souhaitez avec JS.
Pablo Cantero

2
RequestBin n'est plus disponible.
AmokHuginnsson

29

Jetez un œil à PutsReq , il est similaire aux autres, mais il vous permet également d'écrire les réponses que vous souhaitez en utilisant JavaScript.


2
Excellent site - il semble le plus intuitif et possède une bonne documentation qui vous aide à vérifier des éléments comme le type de demande, les en-têtes, les données de formulaire, etc.
AlbatrossCafe

25

Webhook Tester est un excellent outil: https://webhook.site ( GitHub )

entrez la description de l'image ici

Important pour moi, il a montré l'IP du demandeur, ce qui est utile lorsque vous devez ajouter une adresse IP à la liste blanche, mais que vous n'êtes pas sûr de ce que c'est.


Je dois faire en sorte que le corps de la réponse contienne l'URL du site sur lequel le message est publié. Mais le site obtient un GUID aléatoire après sa création, et il ne semble y avoir qu'un moyen de modifier la réponse avant la création du site lorsque vous cliquez sur le New URLbouton. Existe-t-il un moyen de créer une nouvelle URL, puis de modifier ensuite le corps de la réponse?
Nick

Thumb up for https
Oleg Khalidov

23

Si vous voulez un serveur de test local qui accepte n'importe quelle URL et vide simplement la demande sur la console, vous pouvez utiliser le nœud:

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

Enregistrez-le dans un fichier 'echo.js' et exécutez-le comme suit:

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

Vous pouvez ensuite soumettre des données:

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

qui sera affiché dans la sortie standard du serveur:

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 serveur de test local monoligne

Configurez un serveur de test local sur une seule ligne sous Linux:

nc -kdl localhost 8000

Exemple de créateur de demande sur un autre shell:

wget http://localhost:8000

puis sur le premier shell, vous voyez apparaître la demande qui a été faite:

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

ncdu netcat-openbsdpackage est largement disponible et préinstallé sur Ubuntu.

Testé sur Ubuntu 18.04.


2
nc -kdl localhost 8000écoutera en boucle, donc pas besoin de bash while. Cependant, ncne répondra pas, donc les requêtes de test attendront l'expiration du délai pour la non-réponse.
écrit

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donefera répondre nc avec un code 200 OK à chaque fois.
nikniknik

6

Voici un écho de Postman: https://docs.postman-echo.com/

exemple:

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

réponse:

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

Créer choisissez un hébergeur gratuit et mettez le code suivant

 <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 . Il a une fonctionnalité intéressante pour obtenir des points de terminaison sans connexion (compte temporaire 24h)


convenu a de belles fonctionnalités où vous pouvez définir la réponse spécifique dont vous avez besoin. c'est-à-dire 200/301, 401 etc. Bon si vous voulez simuler une erreur ou dans mon cas ne pas router vers une page lors de l'utilisation d'une résolution en angulaire si les données pour rendre cette page ne sont pas (encore)
retournées


2

Vous n'avez peut-être pas besoin de site Web pour cela, ouvrez uniquement le navigateur, appuyez sur F12pour accéder aux outils de développement> console, puis dans la console, écrivez du code JavaScript pour le faire.

Ici, je partage quelques façons d'y parvenir:

Pour une demande GET: * .Using jQuery:

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

Pour une demande POST: 1. Utilisation de 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. À l'aide de jQuery, ajoutez et soumettez

     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. Utilisation de JavaScript pur:

    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. Ou même en utilisant 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 ();

(Remarque: Étant donné que j'ai le caractère backtick (`) dans mon code, le format de code est ruiné, je ne sais pas comment le corriger)


1

Je ne sais pas si quelqu'un prendrait autant de peine pour tester les appels GET et POST. J'ai pris le module Python Flask et écrit une fonction qui fait quelque chose de similaire à ce que @Robert a partagé.

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"

Lorsque je lance ceci, cela suit:

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)

Essayons maintenant quelques appels. J'utilise le navigateur.

http://127.0.0.1:5000/method

Ceci est juste une méthode GET

http://127.0.0.1:5000/method/NotCorrect

Ce souhait n'est pas disponible. Voici les souhaits disponibles: ['application', 'args', 'autorisation', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'environ "," fichiers "," formulaire "," en-têtes "," hôte "," json "," méthode "," type MIME "," module "," chemin "," pragma "," plage "," référent ", 'schéma', 'peu profond', 'flux', 'url', 'valeurs']

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess': False, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCRIPT_NAME':'M_HET ':' MH '/ 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, comme 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 ': Faux,' 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 ':', mode '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

Installez-en un vous-même. Copiez cet extrait sur votre serveur Web.

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

Postez simplement ce que vous voulez sur cette page. Terminé.


5
Le point est de ne pas avoir à utiliser de serveur. Par exemple, que se passe-t-il si vous souhaitez poster une question à SO, mais que votre serveur peut ne pas rester longtemps. L'OP demande quelque chose de permanent tel que jsfiddle qui peut être utilisé pour tester ou démontrer le poste.
abalter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.