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?

John Twigg
fuente
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:

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

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

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

Pablo Cantero
fuente
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.

Patrick Quirk
fuente
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]
Wilfred Hughes
fuente
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.

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
fuente
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":{"...
rogerdpack
fuente
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";
 }
 ?>
Greensuisse
fuente
4

https://www.mockable.io . Tiene una buena característica de obtener puntos finales sin inicio de sesión (cuenta temporal de 24 horas)

Miguel
fuente
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)

Mohammad Musavi
fuente
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 '}

Arindam Roychowdhury
fuente
-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.

Capitán Hawai
fuente
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