Servidor de teste HTTP que aceita solicitações GET / POST


449

Eu preciso de um servidor de teste ao vivo que aceite minhas solicitações de informações básicas via HTTP GET e também permita que eu POST (mesmo que realmente não esteja fazendo nada). Isso é inteiramente para fins de teste.

Um bom exemplo está aqui . Ele aceita facilmente solicitações GET, mas eu preciso de uma que aceite solicitações POST também.

Alguém sabe de um servidor que também posso enviar mensagens de teste falsas?


2
Você deseja que ele registre POSTs?
Jared Farrish

4
Isso faz o que você quer, eu acho. github.com/jar-o/dumdum Não é necessário código
jar

Respostas:


736

http://httpbin.org/

Ele ecoa os dados usados ​​em sua solicitação para qualquer um destes tipos:


Retorna um JSON descrevendo a solicitação que você fez.
tbraun

4
Existe também a possibilidade de criar um servidor httpbin local?
user3280180

4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app como mencionado é httpbin.org
HVNSweeting

esta é a melhor resposta / serviço, IMO. Eu criei um simples codepen mostrando como usá-lo: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

6
@therobyouknow clicando no link executa um GET, mas se você fizer um POST para esse URL, ele funcionará. Tente: curl -iX POST httpbin.org/postele retorna um 200.
Robert

120

Existe http://ptsv2.com/

"Aqui você encontrará um servidor que recebe qualquer POST que desejar e armazena o conteúdo para você revisar."


7
Este é realmente bom se você estiver executando solicitações que são acionadas de um servidor remoto cujas partes internas você não tem acesso, pois salvará a solicitação para recuperação posterior.
Ozmo

2
Também é possível tentar requestb.in - ele também salva solicitações para inspeção posterior.
Maksym Davydov

Eu sei que literalmente qualquer coisa poderia ser usada ... Mas existe um "gettestserver" que deve permanecer acordado por um longo tempo?
Bydor

2
Ao contrário de httpbin.org/put , ele retorna uma resposta muito útil que fornece detalhes sobre sua solicitação. Especialmente no caso de upload de arquivos, é muito útil, pois você pode ver o seu arquivo carregado no servidor que, acredito, não é possível no httpbin.org.
ViFI 10/10

1
O mais "legal" sobre isso é que ele não usa TLS / HTTPS, o que facilita muito a depuração dos bytes no fio.
Ntninja 27/05

40

O http://requestb.in era semelhante às ferramentas já mencionadas e também tinha uma interface muito agradável.

O RequestBin fornece um URL que coleta as solicitações feitas e permite que você as inspecione de maneira amigável ao ser humano. Use RequestBin para ver o que seu cliente HTTP está enviando ou para inspecionar e depurar solicitações de webhook.

Embora tenha sido descontinuado em 21 de março de 2018.

Descontinuamos a versão hospedada publicamente do RequestBin devido a abuso contínuo que dificultava a manutenção do site de maneira confiável. Consulte as instruções para configurar sua própria instância auto-hospedada.


3
PutsReq também é semelhante ao RequestBin, mas permite que você escreva as respostas desejadas com JS.
Pablo Cantero

2
RequestBin não está mais disponível.
AmokHuginnsson

29

Dê uma olhada no PutsReq , que é semelhante aos outros, mas também permite que você escreva as respostas que deseja usando JavaScript.


2
Grande local - que parece ser o mais intuitivo e tem uma boa documentação que ajuda a verificar para coisas como tipo de solicitação, cabeçalhos, dados de formulários, etc.
AlbatrossCafe

25

O Webhook Tester é uma ótima ferramenta: https://webhook.site ( GitHub )

insira a descrição da imagem aqui

Importante para mim, ele mostrou o IP do solicitante, o que é útil quando você precisa colocar um endereço IP na lista de permissões, mas não tem certeza do que é.


Preciso fazer com que o corpo da resposta contenha o URL do site que está sendo publicado. Mas o site recebe um GUID aleatório depois de criado, e parece haver apenas uma maneira de editar a resposta antes que o site seja criado quando você clica no New URLbotão. Existe uma maneira de criar um novo URL e depois editar o corpo da resposta?
1111 Nick

Polegar para https
Oleg Khalidov 25/03

23

Se você desejar um servidor de teste local que aceite qualquer URL e apenas despeje a solicitação no console, poderá usar o nó:

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

Salve-o em um arquivo 'echo.js' e execute-o da seguinte maneira:

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

Você pode enviar dados:

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

que será mostrado no stdout do 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]


18

nc servidor de teste local de uma linha

Configure um servidor de teste local em uma linha no Linux:

nc -kdl localhost 8000

Criador de solicitações de amostra em outro shell:

wget http://localhost:8000

então, no primeiro shell, você verá a solicitação que foi feita aparecer:

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

ncdo netcat-openbsdpacote está amplamente disponível e pré-instalado no Ubuntu.

Testado no Ubuntu 18.04.


2
nc -kdl localhost 8000vai ouvir em um loop, então não há necessidade para o bash while. No entanto, ncnão responderá, portanto, as consultas de teste aguardarão o tempo limite da não resposta.
aks

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donefará com que o nc responda sempre com um código 200 OK.
nikniknik 26/03

6

Aqui está um eco do Postman: https://docs.postman-echo.com/

exemplo:

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

resposta:

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

Crie, escolha um host gratuito e coloque o seguinte 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 . Possui um recurso interessante de obter pontos de extremidade sem login (conta temporária 24 horas)


concordou possui recursos interessantes, nos quais você pode definir a resposta específica necessária. isto é, 200/301, 401 etc. Bom se você deseja simular um erro ou, no meu caso não rota para uma página quando se usa uma resolução em Angular se os dados para tornar essa página não voltou (ainda)
fidev


2

Você pode não precisar de nenhum site para isso, apenas abra o navegador, pressione F12para obter acesso às ferramentas do desenvolvedor> console e, no console, escreva algum código JavaScript para fazer isso.

Aqui eu compartilho algumas maneiras de conseguir isso:

Para solicitação GET: * .Usando jQuery:

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

Para solicitação 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, acrescente e envie

     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. Ou mesmo usando o ASP.Net:

    var url = " https://Payment.com/index "; Response.Clear (); var sb = novo 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 eu tenho o caractere backtick (`) no meu código, o formato do código foi arruinado, não tenho idéia de como corrigi-lo)


1

Não tenho certeza se alguém levaria tanta dor para testar as chamadas GET e POST. Peguei o módulo Python Flask e escrevi uma função que faz algo semelhante ao que o @Robert compartilhava.

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 executo isso, segue o seguinte:

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)

Agora vamos tentar algumas chamadas. Estou usando o navegador.

http://127.0.0.1:5000/method

Este é apenas um método GET

http://127.0.0.1:5000/method/NotCorrect

Este desejo não está disponível. A seguir, estão os desejos disponíveis: ['aplicativo', 'args', 'autorização', 'blueprint', 'charset', 'close', 'cookies', 'dados', 'data', 'ponto final' e 'ambiente ',' arquivos ',' formulário ',' cabeçalhos ',' host ',' json ',' método ',' mimetype ',' módulo ',' caminho ',' pragma ',' intervalo ',' referenciador ', 'esquema', 'raso', 'fluxo', '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': ',' REQUEST, '' '' '/ 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, 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 ':' texto / html, aplicativo / xhtml + xml, aplicativo / xml; q = 0,9, image / webp, /; q = 0.8 ',' wsgi.version ': (1, 0),' wsgi.run_once ': falso,' wsgi.errors ':', modo 'w' em 0x0000000002042150>, 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' pt-BR, en; q = 0.8 ',' HTTP_ACCEPT_ENCODING ':' gzip, deflate, sdch, br '}


-13

Basta configurar um você mesmo. Copie esse trecho para o seu servidor da web.

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

Basta postar o que você deseja nessa página. Feito.


5
O ponto é não precisar usar um servidor. Por exemplo, e se você quiser postar uma pergunta para o SO, mas seu servidor pode não estar disponível por muito tempo. O OP está solicitando algo permanente, como jsfiddle, que pode ser usado para testar ou demonstrar a postagem.
abalter
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.