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?

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

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

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

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

Pablo Cantero
fonte
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 é.

Patrick Quirk
fonte
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]
Wilfred Hughes
fonte
1
Bem, eu prefiro um forro de um quando no Linux: stackoverflow.com/a/52351480/895245
Ciro Santilli郝海东冠状病六四事件法轮功
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.

Ciro Santilli adicionou uma nova foto
fonte
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":{"...
rogerdpack
fonte
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";
 }
 ?>
greensuisse
fonte
4

https://www.mockable.io . Possui um recurso interessante de obter pontos de extremidade sem login (conta temporária 24 horas)

Mike
fonte
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
3

Eu criei um servidor de teste local hackable de código aberto que você pode executar em questão de minutos. Você pode criar novas APIs, definir sua própria resposta e hackear da maneira que desejar.

Link do Github : https://github.com/prabodhprakash/localTestingServer

prabodhprakash
fonte
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)

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

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

Capitão Havaí
fonte
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