GET / POST isteklerini kabul eden HTTP test sunucusu


449

Ben HTTP GET üzerinden temel bilgi taleplerimi kabul ve aynı zamanda (gerçekten hiçbir şey yapmıyor olsa bile) POST sağlar canlı bir test sunucusuna ihtiyacım var. Bu tamamen test amaçlıdır.

İyi bir örnek burada . Kolayca GET isteklerini kabul eder, ancak POST isteklerini de kabul eden birine ihtiyacım var.

Herkes ben de kukla test mesajları gönderebilirim bir sunucu biliyor mu?


2
POST'ları kaydetmesini istiyor musunuz?
Jared Farrish

4
İstediğini yapar sanırım. github.com/jar-o/dumdum Kod gerekmez
kavanoz

Yanıtlar:


736

http://httpbin.org/

Aşağıdaki türlerden herhangi biri için isteğinizde kullanılan verileri yankılar:


Yaptığınız isteği açıklayan bir JSON döndürür.
tbraun

4
Yerel bir httpbin sunucusu oluşturma imkanı da var mı?
user3280180

4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app belirtildiği gibi httpbin.org
HVNSweet

Bu en iyi cevap / hizmet, imo. nasıl kullanılacağını gösteren basit bir kod oluşturdu: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

6
@therobyouknow bağlantıyı tıklatmak bir GET gerçekleştirir, ancak bu url'ye bir POST yaparsanız çalışır. Deneyin: curl -iX POST httpbin.org/post200 döndürür.
Robert

120

Orada http://ptsv2.com/

"Burada vermek istediğiniz herhangi bir POST'u alan ve incelemeniz için içeriği depolayan bir sunucu bulacaksınız."


7
Bu, dahili bilgilere erişiminiz olmayan uzak bir sunucudan tetiklenen istekleri çalıştırdığınızda gerçekten iyidir, çünkü daha sonra almak için isteği kaydeder.
ozmo

2
Ayrıca bir requestb.in deneyebilirsiniz - daha sonra inceleme taleplerini kaydeder.
Maksym Davydov

Kelimenin tam anlamıyla her şeyin kullanılabileceğini biliyorum ... Ama uzun süre kalması beklenen bir "gettestserver" var mı?
byxor

2
Httpbin.org/put öğesinin aksine , isteğinizle ilgili ayrıntılar veren çok kullanışlı bir yanıt döndürür. Özellikle dosya yükleme durumunda, dosyanızı httpbin.org'da mümkün olmadığına inandığım sunucuya yüklediğiniz için çok yararlıdır.
ViFI

1
Bununla ilgili “harika” şey, TLS / HTTPS kullanmamasıdır, bu da teldeki baytların hata ayıklamasını çok daha kolay hale getirir.
ntninja

40

http://requestb.in , daha önce bahsedilen araçlara benzerdi ve ayrıca çok güzel bir kullanıcı arayüzüne sahipti.

RequestBin, kendisine yapılan istekleri toplayacak ve bunları insan dostu bir şekilde incelemenize izin verecek bir URL verir. HTTP istemcinizin ne gönderdiğini görmek veya webhook isteklerini incelemek ve hatalarını ayıklamak için RequestBin'i kullanın.

21 Mart 2018 tarihinden itibaren durdurulmuş olmasına rağmen.

Sitenin güvenilir bir şekilde tutulmasını zorlaştıran ve devam eden kötüye kullanım nedeniyle RequestBin'in genel olarak barındırılan sürümünü durdurduk. Kendi kendine barındırılan vakanızı oluşturmak için lütfen talimatlara bakın .


3
PutsReq , RequestBin'e de benzer, ancak JS ile istediğiniz yanıtları yazmanıza izin verir.
Pablo Cantero

2
RequestBin artık mevcut değil.
AmokHuginnsson

29

PutsReq'a bir göz atın , diğerlerine benzer, ancak JavaScript kullanarak istediğiniz yanıtları yazmanıza da izin verir.


2
Harika bir site - en sezgisel görünüyor ve istek türü, başlıklar, form verileri
AlbatrossCafe

25

Webhook Tester harika bir araçtır: https://webhook.site ( GitHub )

resim açıklamasını buraya girin

Benim için önemli, istekte bulunanın IP'sini gösterdi, bu da bir IP adresini beyaz listeye eklemeniz gerektiğinde yararlıdır, ancak ne olduğundan emin değilsiniz.


Yanıt gövdesinin gönderilmekte olan sitenin URL'sini içermesini sağlamam gerekiyor. Ancak site oluşturulduktan sonra rastgele bir GUID alır ve yalnızca New URLdüğmeyi tıklattığınızda site oluşturulmadan önce yanıtı düzenlemenin bir yolu vardır . Yeni bir URL oluşturmanın ve ardından yanıt gövdesini düzenlemenin bir yolu var mı?
Nick

Https için başparmak yukarı
Oleg Khalidov

23

Herhangi bir URL'yi kabul eden ve isteği konsola atan bir yerel test sunucusu istiyorsanız, düğümü kullanabilirsiniz:

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

Bir 'echo.js' dosyasına kaydedin ve aşağıdaki gibi çalıştırın:

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

Daha sonra veri gönderebilirsiniz:

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

sunucunun stdout'unda gösterilecek:

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 tek katmanlı yerel test sunucusu

Linux altında tek bir satıra yerel bir test sunucusu kurun:

nc -kdl localhost 8000

Başka bir kabukta örnek istek yapıcı:

wget http://localhost:8000

ardından ilk kabukta yapılan isteğin göründüğünü görürsünüz:

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

nc -dan netcat-openbsd paket yaygın olarak kullanılan ve bir Ubuntu önceden yüklenmiş.

Ubuntu 18.04'te test edildi.


2
nc -kdl localhost 8000bir döngü içinde dinleyecektir, bu yüzden bash'a gerek yok while. Ancak ncyanıt vermez, bu nedenle test sorguları yanıt vermeme zaman aşımına kadar bekler.
aks

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donenc her seferinde 200 OK koduyla yanıt verecektir.
nikniknik

6

İşte bir Postacı yankısı: https://docs.postman-echo.com/

misal:

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

tepki:

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

Oluşturun ücretsiz bir web barındırma seçin ve aşağıdaki kodu koyun

 <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 . Giriş yapmadan uç noktaları alma özelliği vardır (24 saat geçici hesap)


anlaşılan, sizin ihtiyacınız olan belirli cevabı ayarlayabileceğiniz hoş özelliklere sahiptir. örn. 200/301, 401 vb. Bir hatayı simüle etmek istiyorsanız veya benim durumumda, bu sayfayı
işleyecek


2

Bunun için herhangi bir web sitesine ihtiyacınız olmayabilir, sadece tarayıcıyı açın, F12geliştirici araçlarına erişmek için basın > konsol, ardından konsolda bunu yapmak için bazı JavaScript Kodları yazın.

Burada bunu başarmak için bazı yollar paylaşıyorum:

GET isteği için: *. JQuery kullanarak:

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

POST isteği için: 1. jQuery $ .ajax kullanarak:

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. JQuery kullanarak ekleme ve gönderme

     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. Saf JavaScript Kullanma:

    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. Ya da ASP.Net kullanarak:

    var url = " https://Payment.com/index "; Response.Clear (); var sb = yeni 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 ();

(Not: Kodumda backtick karakteri (`) bulunduğum için kod formatı bozuldu, nasıl düzeltileceğimi bilmiyorum)


1

GET ve POST çağrılarını test etmek için bu kadar acı çekip çekmeyeceğinden emin değilim. Python Flask modülünü aldım ve @Robert'in paylaştıklarına benzer bir şey yapan bir işlev yazdım.

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"

Bunu çalıştırdığımda, bu aşağıdaki gibidir:

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)

Şimdi bazı çağrıları deneyelim. Tarayıcıyı kullanıyorum.

http://127.0.0.1:5000/method

Bu sadece bir GET yöntemidir

http://127.0.0.1:5000/method/NotCorrect

Bu istek mevcut değil. Kullanılabilir istekler şunlardır: ['uygulama', 'argümanlar', 'yetkilendirme', 'plan', 'karakter kümesi', 'kapat', 'çerezler', 'veri', 'tarih', 'bitiş noktası', 'environ ',' dosyalar ',' form ',' üstbilgiler ',' ana bilgisayar ',' json ',' yöntem ',' mime türü ',' modül ',' yol ',' pragma ',' aralık ',' yönlendiren ', 'şema', 'sığ', 'akış', 'url', 'değerler']

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess': Yanlış, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCRIPT_NAME': 'G' ',' PAT 'RE' '/ 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 (Gecko gibi KHTML) Chrome / 54.0.2840.71 Safari / 537.36 ',' HTTP_CONNECTION ':' canlı tut ',' 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 ': Yanlış,' HTTP_UPGRADE_INSECURE_REQUESTS ':' 1 ',' HTTP_ACCEPT ':' metin / html, uygulama / xhtml + xml, uygulama / xml; q = 0.9, resim / webp, /; q = 0.8 ',' wsgi.version ': (1, 0),' wsgi.run_once ': Yanlış,' wsgi.errors ':', 0x0000000002042150'de 'w' modu> 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' en-US, en; q = 0,8 ',' HTTP_ACCEPT_ENCODING ':' gzip, deflate, sdch, br '}


-13

Sadece birini kendin kur. Bu snippet'i web sunucunuza kopyalayın.

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

İstediğinizi o sayfaya gönderin. Bitti.


5
Asıl nokta bir sunucu kullanmak zorunda değilsiniz. Örneğin, SO'ya bir soru göndermek istiyorsanız, ancak sunucunuz uzun süre civarında olmayabilir. OP, yazıyı test etmek veya göstermek için kullanılabilecek jsfiddle gibi kalıcı bir şey istiyor.
abalter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.