เซิร์ฟเวอร์ทดสอบ HTTP ยอมรับคำขอ GET / POST


449

ฉันต้องการเซิร์ฟเวอร์ทดสอบสดที่ยอมรับคำขอของฉันสำหรับข้อมูลพื้นฐานผ่าน HTTP GET และอนุญาตให้ฉันโพสต์ (แม้ว่ามันจะไม่ได้ทำอะไรเลย) ทั้งหมดนี้มีวัตถุประสงค์เพื่อทดสอบ

เป็นตัวอย่างที่ดีที่นี่ มันยอมรับการร้องขอ GET ได้ง่าย แต่ฉันต้องการสิ่งที่ยอมรับการร้องขอ POST เช่นกัน

ไม่มีใครรู้ของเซิร์ฟเวอร์ที่ฉันสามารถส่งข้อความทดสอบจำลองด้วยหรือไม่


2
คุณต้องการให้บันทึกโพสต์หรือไม่
Jared Farrish

4
ฉันคิดว่านี่เป็นสิ่งที่คุณต้องการ github.com/jar-o/dumdumไม่ต้องใช้รหัส
jar

คำตอบ:


736

http://httpbin.org/

สะท้อนข้อมูลที่ใช้ในคำขอของคุณสำหรับประเภทเหล่านี้:


มันจะส่งคืน JSON ที่อธิบายถึงคำขอที่คุณทำ
tbraun

4
มีความเป็นไปได้ในการสร้างเซิร์ฟเวอร์ httpbin ภายในเครื่องหรือไม่
user3280180

4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app ตามที่กล่าวไว้คือ httpbin.org
HVNSweeting

นี่คือคำตอบ / บริการที่ดีที่สุด imo ฉันสร้าง codepen ง่าย ๆ ที่แสดงวิธีใช้มัน: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

6
@therobyouknow การคลิกที่ลิงค์จะทำการรับ แต่ถ้าคุณทำ POST ไปยัง URL นั้นจะใช้งานได้ ลอง: curl -iX POST httpbin.org/postจะคืนค่า 200
Robert

120

มีhttp://ptsv2.com/

"ที่นี่คุณจะพบเซิร์ฟเวอร์ที่ได้รับ POST ใด ๆ ที่คุณต้องการให้และเก็บเนื้อหาเพื่อให้คุณตรวจสอบ"


7
อันนี้ดีจริง ๆ ถ้าคุณกำลังเรียกใช้การร้องขอที่ถูกทริกเกอร์จากเซิร์ฟเวอร์ระยะไกลที่มี internals คุณไม่สามารถเข้าถึงได้เนื่องจากมันจะบันทึกคำขอสำหรับการดึงในภายหลัง
ozmo

2
อีกอย่างหนึ่งสามารถลองrequestb.in - มันก็บันทึกคำขอสำหรับการตรวจสอบในภายหลัง
Maksym Davydov

ฉันรู้ว่าทุกอย่างสามารถใช้งานได้จริง ... แต่มี "gettestserver" ที่คาดว่าจะอยู่ได้นาน?
byxor

2
ซึ่งแตกต่างจากhttpbin.org/putจะส่งคืนการตอบกลับที่มีประโยชน์มากซึ่งให้รายละเอียดเกี่ยวกับคำขอของคุณ พิเศษในกรณีของการอัปโหลดไฟล์มันมีประโยชน์มากเพราะคุณสามารถเห็นไฟล์ของคุณอัพโหลดบนเซิร์ฟเวอร์ซึ่งฉันเชื่อว่าเป็นไปไม่ได้บน httpbin.org
ViFI

1
สิ่งที่ "เจ๋ง" เกี่ยวกับเรื่องนี้คือมันไม่ได้ใช้ TLS / HTTPS ซึ่งทำให้ง่ายต่อการดีบักไบต์บนสาย
ntninja

40

http://requestb.inคล้ายกับเครื่องมือที่กล่าวถึงแล้วและยังมี UI ที่ดีมาก

RequestBin ให้ URL ที่จะรวบรวมคำขอให้คุณและให้คุณตรวจสอบพวกเขาในแบบที่เป็นมิตรกับมนุษย์ ใช้ RequestBin เพื่อดูว่าไคลเอ็นต์ HTTP ของคุณกำลังส่งอะไรหรือตรวจสอบและแก้ไขข้อบกพร่องของคำขอ webhook

แม้ว่าจะถูกยกเลิกเมื่อวันที่ 21 มีนาคม 2018

เราได้หยุดการใช้ RequestBin เวอร์ชันสาธารณะเนื่องจากการละเมิดอย่างต่อเนื่องทำให้ยากต่อการทำให้เว็บไซต์น่าเชื่อถือ โปรดดูคำแนะนำสำหรับการตั้งค่าอินสแตนซ์ที่คุณโฮสต์เอง


3
PutsReqนั้นคล้ายกับ RequestBin แต่อนุญาตให้คุณเขียนคำตอบที่คุณต้องการด้วย JS
Pablo Cantero

2
RequestBin ไม่สามารถใช้ได้อีกต่อไป
AmokHuginnsson

29

ลองดูที่PutsReqคล้ายกับคนอื่น ๆ แต่ก็ช่วยให้คุณสามารถเขียนคำตอบที่คุณต้องการโดยใช้ JavaScript


2
ไซต์ที่ยอดเยี่ยม - ดูเหมือนว่าใช้งานง่ายที่สุดและมีเอกสารที่ดีที่ช่วยให้คุณตรวจสอบสิ่งต่างๆเช่นประเภทคำขอส่วนหัวข้อมูลฟอร์ม ฯลฯ
AlbatrossCafe

25

เครื่องมือทดสอบ Webhook เป็นเครื่องมือที่ยอดเยี่ยม: https://webhook.site ( GitHub )

ป้อนคำอธิบายรูปภาพที่นี่

สำคัญสำหรับฉันมันแสดงให้เห็น IP ของผู้ร้องขอซึ่งมีประโยชน์เมื่อคุณต้องการอนุญาตที่อยู่ IP ที่ปลอดภัย แต่ไม่แน่ใจว่าเป็นอะไร


ฉันต้องทำให้เนื้อหาการตอบสนองมี URL ของเว็บไซต์ที่กำลังโพสต์ไว้ แต่ไซต์จะได้รับ GUID แบบสุ่มหลังจากที่สร้างขึ้นและดูเหมือนจะเป็นเพียงวิธีการแก้ไขการตอบสนองก่อนที่ไซต์นั้นจะถูกสร้างขึ้นเมื่อคุณคลิกNew URLปุ่ม มีวิธีสร้าง URL ใหม่แล้วแก้ไขเนื้อหาการตอบกลับไหม?
Nick

Thumb up สำหรับ https
Oleg Khalidov

23

ถ้าคุณต้องการเซิร์ฟเวอร์ทดสอบโลคัลที่ยอมรับ URL ใด ๆ และเพียงทิ้งคำร้องขอไปยังคอนโซลคุณสามารถใช้โหนด:

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

บันทึกไว้ในไฟล์ 'echo.js' และเรียกใช้ดังนี้:

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

จากนั้นคุณสามารถส่งข้อมูล:

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

ซึ่งจะแสดงใน stdout ของเซิร์ฟเวอร์:

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
ดีฉันชอบหนึ่งซับเมื่อบน Linux: stackoverflow.com/a/52351480/895245
Ciro Santilli 郝海东冠状冠状病六四事件法轮功

18

nc เซิร์ฟเวอร์ทดสอบโลคอลหนึ่งไลเนอร์

ติดตั้งเซิร์ฟเวอร์ทดสอบโลคัลในหนึ่งบรรทัดภายใต้ Linux:

nc -kdl localhost 8000

ตัวอย่างผู้สร้างคำขอบนเชลล์อื่น:

wget http://localhost:8000

จากนั้นในเชลล์แรกที่คุณเห็นคำขอที่ทำปรากฏ:

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

ncจากnetcat-openbsdแพ็คเกจนี้มีให้ใช้งานอย่างกว้างขวางและติดตั้งไว้ล่วงหน้าบน Ubuntu

ทดสอบบน Ubuntu 18.04


2
nc -kdl localhost 8000whileจะรับฟังในวงจึงต้องทุบตีไม่มี อย่างไรก็ตามncจะไม่ตอบสนองดังนั้นแบบสอบถามทดสอบจะรอจนกว่าจะหมดเวลาสำหรับการไม่ตอบกลับ
aks

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; doneจะทำให้ NC ตอบสนองด้วยรหัส 200 OK ทุกครั้ง
nikniknik

6

นี่คือเสียงสะท้อนของบุรุษไปรษณีย์หนึ่งคน: https://docs.postman-echo.com/

ตัวอย่าง:

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

การตอบสนอง:

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

สร้างเลือกโฮสต์เว็บฟรีและใส่รหัสต่อไปนี้

 <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 มันมีคุณสมบัติที่ดีในการรับจุดสิ้นสุดโดยไม่ต้องเข้าสู่ระบบ (บัญชีชั่วคราว 24 ชั่วโมง)


ตกลงมีคุณสมบัติที่ดีที่คุณสามารถตั้งค่าการตอบสนองที่คุณต้องการ เช่น 200/301, 401 เป็นต้นดีถ้าคุณต้องการจำลองข้อผิดพลาดหรือในกรณีของฉันไม่ได้กำหนดเส้นทางไปยังหน้าเว็บเมื่อใช้การแก้ไขใน Angular หากข้อมูลเพื่อแสดงหน้านั้นยังไม่ได้กลับมา (ยัง)
fidev

3

ฉันได้สร้างเซิร์ฟเวอร์ทดสอบภายในที่สามารถแฮ็กโอเพนซอร์ซซึ่งคุณสามารถใช้งานได้ในไม่กี่นาที คุณสามารถสร้าง API ใหม่กำหนดคำตอบของคุณเองและแฮ็คได้ทุกวิธีที่คุณต้องการ

ลิงค์ Github : https://github.com/prabodhprakash/localTestingServer


2

คุณอาจไม่ต้องการเว็บไซต์ใด ๆ เพียงแค่เปิดเบราว์เซอร์กดF12เพื่อเข้าถึงเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์> คอนโซลจากนั้นในคอนโซลเขียนโค้ด JavaScript บางอันเพื่อทำเช่นนั้น

ที่นี่ฉันแบ่งปันวิธีที่จะทำให้:

สำหรับคำขอ GET: *. ใช้ jQuery:

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

สำหรับคำขอ POST: 1. ใช้ 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. ใช้ jQuery ผนวกและส่ง

     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. ใช้ JavaScript บริสุทธิ์:

    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. หรือแม้กระทั่งการใช้ ASP.Net:

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

(หมายเหตุ: เนื่องจากฉันมีอักขระ backtick (`) ในรูปแบบรหัสของฉันที่ถูกทำลายฉันจึงไม่ทราบวิธีการแก้ไข)


1

ฉันไม่แน่ใจว่าใครจะเจ็บปวดขนาดนี้เพื่อทดสอบ GET และ POST ฉันใช้โมดูล Python Flask และเขียนฟังก์ชั่นที่ทำสิ่งที่คล้ายกับที่ @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"

เมื่อฉันเรียกใช้สิ่งนี้สิ่งนี้จะเป็นดังนี้:

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)

ตอนนี้ให้ลองโทร ฉันใช้เบราว์เซอร์

http://127.0.0.1:5000/method

นี่เป็นเพียงวิธีการ GET

http://127.0.0.1:5000/method/NotCorrect

ความปรารถนานี้ไม่สามารถใช้ได้ ต่อไปนี้เป็นความปรารถนาที่มีอยู่: ['แอปพลิเคชัน', 'args', 'การอนุญาต', 'พิมพ์เขียว', 'charset', 'ปิด', 'คุกกี้', 'ข้อมูล', 'ข้อมูล', 'วันที่', 'ปลายทาง' ' ',' files ',' form ',' headers ',' host ',' json ',' method ',' mimetype ',' module ',' module ',' path ',' pragma ',' range ',' referrer ', 'scheme', 'ตื้น', 'สตรีม', 'url', 'values']

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess': เท็จ, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3D' 'GETT', 'TCHE', 'HTTP:', 'SERVER_SOFTWARE': 'SCRIPTET', '' '/ 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 เช่น 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.01: 5000' , 'wsgi.multithread' เท็จ 'HTTP_UPGRADE_INSECURE_REQUESTS': '1', 'HTTP_ACCEPT': 'text / html แอพลิเคชัน / XHTML + XML, application / XML; q = 0.9 ภาพ / webp, /; q = 0.8 ',' wsgi.version ': (1, 0),' wsgi.run_once ': เท็จ,' wsgi.errors ':', โหมด 'w' ที่ 0x0000000002042150>, 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' en-US, en; q = 0.8 ',' HTTP_ACCEPT_ENCODING ':' gzip, แฟบ, sdch, br '}


-13

เพียงแค่ตั้งค่าด้วยตัวคุณเอง คัดลอกตัวอย่างนี้ไปยังเว็บเซิร์ฟเวอร์ของคุณ

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

เพียงโพสต์สิ่งที่คุณต้องการในหน้านั้น เสร็จสิ้น


5
ประเด็นคือไม่ต้องใช้เซิร์ฟเวอร์ ตัวอย่างเช่นถ้าคุณต้องการโพสต์คำถามไปที่ SO แต่เซิร์ฟเวอร์ของคุณอาจไม่ได้อยู่นาน OP กำลังขอบางสิ่งบางอย่างถาวรเช่น jsfiddle ที่สามารถใช้ในการทดสอบหรือสาธิตการโพสต์
ปิดบัง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.