Servidor de prueba HTTP que acepta solicitudes GET / POST


449

Necesito un servidor de prueba en vivo que acepte mis solicitudes de información básica a través de HTTP GET y también me permita PUBLICAR (incluso si realmente no está haciendo nada). Esto es completamente para fines de prueba.

Un buen ejemplo está aquí . Acepta fácilmente solicitudes GET, pero también necesito una que acepte solicitudes POST.

¿Alguien sabe de un servidor que también puedo enviar mensajes de prueba ficticios?


2
¿Desea que registre POST?
Jared Farrish

44
Esto hace lo que quieres, creo. github.com/jar-o/dumdum No se requiere código
jar

Respuestas:


736

http://httpbin.org/

Se hace eco de los datos utilizados en su solicitud para cualquiera de estos tipos:


Devuelve un JSON que describe la solicitud que ha realizado.
tbraun

44
¿Existe también la posibilidad de crear un servidor httpbin local?
user3280180

44
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app como se menciona es httpbin.org
HVNSweeting

Esta es la mejor respuesta / servicio, IMO. Creé un código simple que muestra cómo usarlo: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

66
@therobyouknow haciendo clic en el enlace realiza un GET, pero si realiza una POST a esa url, funciona. Prueba: curl -iX POST httpbin.org/postdevuelve un 200.
Robert

120

Hay http://ptsv2.com/

"Aquí encontrará un servidor que recibe cualquier POST que desee y almacena el contenido para que lo revise".


77
Este es realmente bueno si está ejecutando solicitudes que se activan desde un servidor remoto cuyas partes internas no tiene acceso, ya que guardará la solicitud para su posterior recuperación.
ozmo

2
También se puede probar requestb.in : también guarda las solicitudes para su posterior inspección.
Maksym Davydov

Sé que, literalmente, cualquier cosa podría usarse ... ¿Pero hay un "gettestserver" que se espera que permanezca así por mucho tiempo?
byxor

2
A diferencia de httpbin.org/put , devuelve una respuesta muy útil que proporciona detalles sobre su solicitud. Especialmente en el caso de la carga de archivos, es muy útil ya que puede ver su archivo cargado en el servidor, lo que creo que no es posible en httpbin.org.
ViFI

1
Lo "genial" de esto es que no utiliza TLS / HTTPS, lo que facilita la depuración de los bytes en el cable.
ntninja

40

http://requestb.in era similar a las herramientas ya mencionadas y también tenía una interfaz de usuario muy agradable.

RequestBin le proporciona una URL que recopilará las solicitudes que se le hagan y le permitirá inspeccionarlas de una manera amigable para los humanos. Use RequestBin para ver qué está enviando su cliente HTTP o para inspeccionar y depurar solicitudes de webhook.

Aunque ha sido descontinuado a partir del 21 de marzo de 2018.

Hemos descontinuado la versión alojada públicamente de RequestBin debido al abuso continuo que hizo muy difícil mantener el sitio de manera confiable. Consulte las instrucciones para configurar su propia instancia autohospedada.


3
PutsReq también es similar a RequestBin, pero le permite escribir las respuestas que desea con JS.
Pablo Cantero

2
RequestBin ya no está disponible.
AmokHuginnsson

29

Eche un vistazo a PutsReq , es similar a los demás, pero también le permite escribir las respuestas que desea mediante JavaScript.


2
Gran sitio - parece el más intuitivo y tiene buena documentación que le ayuda a comprobar para cosas como el tipo de solicitud, cabeceras, datos de formularios, etc.
AlbatrossCafe

25

Webhook Tester es una gran herramienta: https://webhook.site ( GitHub )

ingrese la descripción de la imagen aquí

Importante para mí, mostró la IP del solicitante, lo que es útil cuando necesita incluir una dirección IP en la lista blanca pero no está seguro de cuál es.


Necesito hacer que el cuerpo de la respuesta contenga la URL del sitio en el que se publica. Pero el sitio obtiene un GUID aleatorio después de que se crea, y solo parece haber una manera de editar la respuesta antes de que se cree el sitio cuando hace clic en el New URLbotón. ¿Hay alguna manera de crear una nueva URL y luego editar el cuerpo de la respuesta?
Nick

Thumb up for https
Oleg Khalidov

23

Si desea un servidor de prueba local que acepte cualquier URL y simplemente descargue la solicitud en la consola, puede usar el 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}/`);
});

Guárdelo en un archivo 'echo.js' y ejecútelo de la siguiente manera:

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

Luego puede enviar datos:

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

que se mostrará en stdout del servidor:

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
Bueno, prefiero un trazador de líneas cuando estoy en Linux: stackoverflow.com/a/52351480/895245
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

18

nc servidor de prueba local de una línea

Configure un servidor de prueba local en una línea en Linux:

nc -kdl localhost 8000

Creador de solicitudes de muestra en otro shell:

wget http://localhost:8000

luego en el primer shell verá aparecer la solicitud que se hizo:

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

ncdel netcat-openbsdpaquete está ampliamente disponible y preinstalado en Ubuntu.

Probado en Ubuntu 18.04.


2
nc -kdl localhost 8000escuchará en un bucle, por lo que no es necesario el bash while. Sin embargo, ncno responderá, por lo que las consultas de prueba esperarán hasta que se agote el tiempo para la no respuesta.
aks

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donehará que nc responda con un código 200 OK cada vez.
nikniknik

6

Aquí hay un eco de cartero: https://docs.postman-echo.com/

ejemplo:

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

respuesta:

{"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, elige un proveedor de alojamiento web gratuito y pon el siguiente código

 <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 . Tiene una buena característica de obtener puntos finales sin inicio de sesión (cuenta temporal de 24 horas)


acordado tiene características agradables donde puede establecer la respuesta específica que necesita. es decir, 200/301, 401, etc. Bueno si desea simular un error o, en mi caso, no enrutar a una página al usar una resolución en Angular si los datos para representar esa página no han regresado (todavía)
fidev


2

Es posible que no necesite ningún sitio web para eso, solo abra el navegador, presione F12para obtener acceso a las herramientas del desarrollador> consola, luego en la consola escriba un código JavaScript para hacerlo.

Aquí comparto algunas formas de lograr eso:

Para solicitud GET: * .Utilizando jQuery:

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

Para solicitud POST: 1. Usando 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. Usando jQuery, agregue y envíe

     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. Usando 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 incluso usando ASP.Net:

    var url = " https://Payment.com/index "; Response.Clear (); var sb = nuevo 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: como tengo el carácter de retroceso (`) en mi código, el formato del código se arruinó, no tengo idea de cómo corregirlo)


1

No estoy seguro de si alguien tomaría tanto dolor para probar las llamadas GET y POST. Tomé el módulo Python Flask y escribí una función que hace algo similar a lo que compartió @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"

Cuando ejecuto esto, esto sigue:

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)

Ahora intentemos algunas llamadas. Estoy usando el navegador

http://127.0.0.1:5000/method

Esto es solo un método GET

http://127.0.0.1:5000/method/NotCorrect

Este deseo no está disponible. Los siguientes son los deseos disponibles: ['aplicación', 'args', 'autorización', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'environmental ',' files ',' form ',' headers ',' host ',' json ',' method ',' mimetype ',' module ',' path ',' pragma ',' range ',' referrer ', 'esquema', 'superficial', 'secuencia', 'url', 'valores']

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess': False, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCRIPT_NAME':'M '', ''. '/ method / environmental', '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, como 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 ': Falso,' 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 ':', modo 'w' en 0x0000000002042150>, 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' en-US, en; q = 0.8 ',' HTTP_ACCEPT_ENCODING ':' gzip, deflate, sdch, br '}


-13

Solo configura uno tú mismo. Copie este fragmento a su servidor web.

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

Solo publica lo que quieras en esa página. Hecho.


55
El punto es no tener que usar un servidor. Por ejemplo, ¿qué pasa si desea publicar una pregunta en SO, pero su servidor puede no estar disponible por mucho tiempo? El OP está pidiendo algo permanente, como jsfiddle, que se pueda usar para probar o demostrar la publicación.
abalter
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.