Máy chủ thử nghiệm HTTP chấp nhận các yêu cầu GET / POST


449

Tôi cần một máy chủ thử nghiệm trực tiếp chấp nhận các yêu cầu thông tin cơ bản của tôi thông qua HTTP GET và cũng cho phép tôi POST (ngay cả khi nó thực sự không làm gì cả). Điều này là hoàn toàn cho mục đích thử nghiệm.

Một ví dụ điển hình là đây . Nó dễ dàng chấp nhận các yêu cầu GET, nhưng tôi cũng cần một yêu cầu chấp nhận các yêu cầu POST.

Có ai biết một máy chủ mà tôi cũng có thể gửi tin nhắn kiểm tra giả không?


2
Bạn có muốn nó đăng nhập POST?
Jared Farrish

4
Điều này làm những gì bạn muốn, tôi nghĩ. github.com/jar-o/dumdum Không yêu cầu mã
jar

Câu trả lời:


736

http://httpbin.org/

Nó lặp lại dữ liệu được sử dụng trong yêu cầu của bạn cho bất kỳ loại nào sau đây:


Nó trả về một JSON mô tả yêu cầu bạn đã thực hiện.
tbraun

4
Có khả năng tạo một máy chủ httpbin cục bộ không?
dùng3280180

4
@ user3280180 $ pip install httpbin gunicorn && gunicorn httpbin:app như đã đề cập là httpbin.org
HVNSweeting

Đây là câu trả lời / dịch vụ tốt nhất, imo. tôi đã tạo một codepen đơn giản chỉ ra cách sử dụng nó: codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

6
@therobyouledge khi nhấp vào liên kết sẽ thực hiện GET, nhưng nếu bạn thực hiện POST cho url đó thì nó hoạt động. Hãy thử: curl -iX POST httpbin.org/postnó trả về 200.
Robert

120

http://ptsv2.com/

"Ở đây bạn sẽ tìm thấy một máy chủ nhận bất kỳ POST nào bạn muốn cung cấp và lưu trữ nội dung để bạn xem xét."


7
Điều này thực sự tốt nếu bạn đang chạy các yêu cầu được kích hoạt từ một máy chủ từ xa có nội bộ mà bạn không có quyền truy cập, vì nó sẽ lưu yêu cầu để truy xuất sau này.
ozmo

2
Ngoài ra người ta có thể thử requestb.in - nó cũng lưu các yêu cầu để kiểm tra sau này.
Maksym Davydov

Tôi biết theo nghĩa đen, bất cứ thứ gì cũng có thể được sử dụng ... Nhưng liệu có một "máy chủ gettests" dự kiến ​​sẽ tồn tại trong một thời gian dài?
byxor

2
Không giống như httpbin.org/put , nó trả về một phản hồi rất hữu ích cung cấp chi tiết về yêu cầu của bạn. Đặc biệt trong trường hợp tải lên tệp, nó rất hữu ích vì bạn có thể thấy tệp của mình được tải lên trên máy chủ mà tôi tin là không thể có trên httpbin.org.
ViFI

1
Điều thú vị về điều này là nó không sử dụng TLS / HTTPS, điều này giúp việc gỡ lỗi các byte trên dây trở nên dễ dàng hơn.
ntninja

40

http://requestb.in tương tự như các công cụ đã được đề cập và cũng có giao diện người dùng rất đẹp.

RequestBin cung cấp cho bạn một URL sẽ thu thập các yêu cầu được thực hiện và cho phép bạn kiểm tra chúng theo cách thân thiện với con người. Sử dụng RequestBin để xem ứng dụng khách HTTP của bạn đang gửi gì hoặc để kiểm tra và gỡ lỗi các yêu cầu webhook.

Mặc dù nó đã bị ngừng kể từ ngày 21 tháng 3 năm 2018.

Chúng tôi đã ngừng phiên bản RequestBin được lưu trữ công khai do lạm dụng liên tục khiến cho việc giữ trang web trở nên đáng tin cậy là rất khó khăn. Vui lòng xem hướng dẫn để thiết lập trường hợp tự lưu trữ của riêng bạn.


3
PutsReq cũng tương tự như RequestBin, nhưng nó cho phép bạn viết các phản hồi bạn muốn với JS.
Pablo Cantero

2
RequestBin không còn khả dụng.
AmokHuginnsson

29

Hãy xem PutsReq , nó tương tự như những cái khác, nhưng nó cũng cho phép bạn viết các phản hồi bạn muốn bằng JavaScript.


2
Trang web tuyệt vời - có vẻ trực quan nhất và có tài liệu tốt giúp bạn kiểm tra những thứ như loại yêu cầu, tiêu đề, dữ liệu biểu mẫu, v.v.
AlbatrossCafe

25

Webhook Tester là một công cụ tuyệt vời: https://webhook.site ( GitHub )

nhập mô tả hình ảnh ở đây

Quan trọng đối với tôi, nó cho thấy IP của người yêu cầu, rất hữu ích khi bạn cần đưa danh sách trắng vào địa chỉ IP nhưng không chắc chắn đó là địa chỉ nào.


Tôi cần làm cho phần phản hồi chứa URL của trang web được đăng lên. Nhưng trang web nhận được một GUID ngẫu nhiên sau khi được tạo và dường như chỉ có một cách để chỉnh sửa phản hồi trước khi trang web được tạo khi bạn nhấp vào New URLnút. Có cách nào để tạo một URL mới và sau đó chỉnh sửa nội dung phản hồi không?
Nick

Đồng ý với https
Oleg Khalidov

23

Nếu bạn muốn một máy chủ thử nghiệm cục bộ chấp nhận bất kỳ URL nào và chỉ cần gửi yêu cầu đến bàn điều khiển, bạn có thể sử dụng nút:

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

Lưu nó trong một tệp 'echo.js' và chạy nó như sau:

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

Sau đó, bạn có thể gửi dữ liệu:

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

sẽ được hiển thị trong thiết bị xuất chuẩn của máy chủ:

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
Chà, tôi thích một lớp lót hơn khi có trên Linux: stackoverflow.com/a/52351480/895245
Ciro Santilli 冠状 病 事件

18

nc máy chủ thử nghiệm cục bộ một lớp

Thiết lập máy chủ thử nghiệm cục bộ trong một dòng trong Linux:

nc -kdl localhost 8000

Nhà sản xuất yêu cầu mẫu trên vỏ khác:

wget http://localhost:8000

sau đó trên shell đầu tiên bạn thấy yêu cầu đã được thực hiện:

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

nctừ netcat-openbsdgói có sẵn rộng rãi và được cài đặt sẵn trên Ubuntu.

Đã thử nghiệm trên Ubuntu 18.04.


2
nc -kdl localhost 8000sẽ lắng nghe trong một vòng lặp, vì vậy không cần bash while. Tuy nhiên, ncsẽ không trả lời, vì vậy các truy vấn kiểm tra sẽ đợi cho đến khi hết thời gian không phản hồi.
aks

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donesẽ làm cho nc trả lời với mã 200 OK mỗi lần.
nikniknik

6

Đây là một tiếng vang của Người đưa thư: https://docs.postman-echo.com/

thí dụ:

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

phản ứng:

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

Tạo chọn một máy chủ web miễn phí và đặt mã sau đây

 <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 . Nó có tính năng hay là nhận điểm cuối mà không cần đăng nhập (tài khoản tạm thời 24h)


đồng ý có các tính năng hay, nơi bạn có thể đặt phản hồi cụ thể mà bạn yêu cầu. tức là 200/301, 401, v.v ... Tốt nếu bạn muốn mô phỏng lỗi hoặc trong trường hợp của tôi không định tuyến đến một trang khi sử dụng độ phân giải trong Angular nếu dữ liệu để hiển thị trang đó chưa quay trở lại (chưa)
fidev


2

Bạn có thể không cần bất kỳ trang web nào cho việc đó, chỉ cần mở trình duyệt, nhấn F12 để có quyền truy cập vào công cụ dành cho nhà phát triển> bảng điều khiển, sau đó trong bảng điều khiển viết một số Mã JavaScript để làm điều đó.

Ở đây tôi chia sẻ một số cách để thực hiện điều đó:

Đối với yêu cầu GET: * .Sử dụng jQuery:

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

Đối với yêu cầu POST: 1. Sử dụng 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. Sử dụng jQuery, nối và gửi

     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. Sử dụng JavaScript thuần túy:

    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. Hoặc thậm chí sử dụng ASP.Net:

    var url = " https://Payment.com/index "; Phản hồi.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 (""); Phản hồi.Write (sb.ToString ()); Phản hồi.End ();

(Lưu ý: Vì tôi có ký tự backtick (`) trong mã của tôi, định dạng mã bị hủy, tôi không biết làm thế nào để sửa nó)


1

Tôi không chắc liệu có ai chịu nỗi đau này để kiểm tra các cuộc gọi GET và POST không. Tôi lấy mô-đun Python Flask và viết một hàm thực hiện một cái gì đó tương tự như những gì @Robert đã chia sẻ.

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"

Khi tôi chạy cái này, cái này như sau:

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)

Bây giờ hãy thử một số cuộc gọi. Tôi đang sử dụng trình duyệt.

http://127.0.0.1 giáp000 / method

Đây chỉ là một phương thức GET

http://127.0.0.1 giáp000 / method / NotC chính xác

Điều ước này không có sẵn. Sau đây là những mong muốn có sẵn: ['ứng dụng', 'args', 'ủy quyền', 'bản thiết kế', 'bộ ký tự', 'đóng', 'cookie', 'dữ liệu', 'ngày', 'điểm cuối', 'môi trường ',' Tệp ',' biểu mẫu ',' tiêu đề ',' máy chủ ',' json ',' phương thức ',' mimetype ',' mô-đun ',' đường dẫn ',' pragma ',' phạm vi ',' tham chiếu ', 'Lược đồ', 'nông', 'luồng', 'url', 'giá trị']

http://127.0.0.1 giáp000 / method / envir

{'wsgi.multiprocess': Sai, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' '/ phương thức / môi trường', '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, như Gecko) Chrome / 54.0.2840.71 Safari / 537.36 ',' HTTP_CONNMENT ':' keep-live ',' SERVER_NAME ':' 127.0.0.1 ',' REMOTE_PORT ': 49569,' wsgi.url http ',' SERVER_PORT ':' 5000 ',' werkzeug.request ':,' wsgi.input ':,' HTTP_HOST ':' 127.0.0.1:5000 ',' wsgi.multithread ': Sai,' HTTP_UPGRADE_INSECURE_REQUESTS ':' 1 ',' HTTP_ACCEPT ':' text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp,1: 5000 ',' wsgi.multithread ': Sai,' HTTP_UPGRADE_INSECURE_REQUESTS ':' 1 ',' HTTP_ACCEPT ':' text / html, application / xhtml + xml, application / xml; q = 0.9, hình ảnh / web; q = 0.8 ',' wsgi.version ': (1, 0),' wsgi.run_once ': Sai,' wsgi.errors ':', chế độ 'w' tại 0x0000000002042150>, 'REMOTE_ADDR': '127.0.0.1 ',' HTTP_ACCEPT_LANGUAGE ':' en-US, en; q = 0.8 ',' HTTP_ACCEPT_ENCODING ':' gzip, def def, sdch, br '}


-13

Chỉ cần thiết lập một lên chính mình. Sao chép đoạn mã này vào máy chủ web của bạn.

tiếng vang "<pre>";
print_r ($ _ POST);
tiếng vang "</ pre>";

Chỉ cần đăng những gì bạn muốn vào trang đó. Làm xong.


5
Vấn đề là không phải sử dụng máy chủ. Chẳng hạn, nếu bạn muốn đăng câu hỏi lên SO, nhưng máy chủ của bạn có thể không tồn tại lâu. OP đang yêu cầu một cái gì đó vĩnh viễn như jsfiddle có thể được sử dụng để kiểm tra hoặc chứng minh bài.
abalter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.