GET / POSTリクエストを受け入れるHTTPテストサーバー


449

HTTP GETを介して基本情報のリクエストを受け入れ、POSTを実行できるライブテストサーバーが必要です(実際に何も実行していない場合でも)。これは完全にテスト目的です。

ここに良い例があります。GETリクエストは簡単に受け入れられますが、POSTリクエストも受け入れられるものが必要です。

誰かがダミーのテストメッセージを送信できるサーバーを知っていますか?


2
POSTをログに記録しますか?
Jared Farrish 2011

4
これはあなたが望んでいることだと思います。github.com/jar-o/dumdumコード不要
jar

回答:


736

http://httpbin.org/

これらのタイプのいずれかのリクエストで使用されるデータをエコーし​​ます。


作成したリクエストを説明するJSONを返します。
tbraun 2014

4
ローカルのhttpbinサーバーを作成する可能性もありますか?
user3280180 2014

4
$ pip install httpbin gunicorn && gunicorn httpbin:app 言及されている@ user3280180 はhttpbin.org
HVNSweeting

これが最良の答え/サービスです、imo。使い方を示す簡単なコードペンを作成しました:codepen.io/nickleus/pen/qOjOGe
Nick Humphrey

6
@therobyouknowリンクをクリックするとGETが実行されますが、そのURLに対してPOSTを実行すると機能します。試してみてください:curl -iX POST httpbin.org/postそれは200を返します
ロバート・

120

http://ptsv2.com/があります

「ここでは、提供したいPOSTを受け取り、確認できるようにコンテンツを保存するサーバーが見つかります。」


7
これは、内部にアクセスできないリモートサーバーからトリガーされたリクエストを実行している場合に非常に便利です。これは、後で取得するためにリクエストを保存するためです。
ozmo 2012

2
また、requestb.inを試すこともできます-これも後の検査のために要求を保存します。
Maksym Davydov 2015年

文字通り何でも使用できることはわかっています...しかし、長時間稼働し続けることが予想される「gettestserver」はありますか?
byxor 2016

2
httpbin.org/putとは異なり、リクエストの詳細を示す非常に便利な応答を返します。特にファイルアップロードの場合、サーバーにアップロードされたファイルをhttpbin.orgでは不可能だと思うので、非常に役立ちます。
ViFI

1
これの「クールな」ことは、TLS / HTTPSを使用しないことです。これにより、ワイヤー上のバイトのデバッグが非常に簡単になります。
ntninja

40

http://requestb.inは、前述のツールに似ていて、UIも非常に優れていました。

RequestBinは、それに行われたリクエストを収集し、人にやさしい方法でそれらを検査できるURLを提供します。RequestBinを使用して、HTTPクライアントが送信しているものを確認したり、Webhookリクエストを検査およびデバッグしたりします。

2018年3月21日をもって廃止されました。

悪用の継続によりサイトの信頼性を維持することが非常に困難になったため、RequestBinの公開ホストバージョンを廃止しました。自分でホストするインスタンスを設定する手順をご覧ください。


3
PutsReqもRequestBinに似ていますが、JSで必要な応答を書き込むことができます。
Pablo Cantero、2015

2
RequestBinは使用できなくなりました。
AmokHuginnsson


25

Webhook Testerはすばらしいツールです:https ://webhook.site (GitHub

ここに画像の説明を入力してください

私にとって重要なのは、リクエスタのIPが表示されたことです。これは、IPアドレスをホワイトリストに登録する必要があるが、それが何であるかわからない場合に役立ちます。


応答本文に投稿先のサイトのURLを含める必要があります。しかし、サイトは作成後にランダムなGUIDを取得し、New URLボタンをクリックしたときにサイトが作成される前に応答を編集する方法しかないと思われます。新しいURLを作成してから、応答本文を編集する方法はありますか?
Nick

httpsに賛成
Oleg Khalidov

23

任意のURLを受け入れ、リクエストをコンソールにダンプするだけのローカルテストサーバーが必要な場合は、nodeを使用できます。

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の場合は1つのライナーを好む:stackoverflow.com/a/52351480/895245
Ciro Santilli郝海东冠状病六四事件法轮機能

18

nc ワンライナーローカルテストサーバー

Linuxでは、ローカルテストサーバーを1行でセットアップします。

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 8000ループでリッスンするため、bashは必要ありませんwhile。ただし、ncは応答しないため、テストクエリは非応答のタイムアウトまで待機します。
18

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donencは毎回200 OKコードで応答します。
nikniknik

6

これが1つのPostmanエコーです: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時間の一時アカウント)


合意には、必要な特定の応答を設定できる優れた機能があります。/ 301すなわち200、401等の良いあなたは、データが(まだ)戻って来ていない、そのページをレンダリングする場合は角度で決意を使用するときにページにエラーまたは私の場合にはないルートをシミュレートしたい場合は
fidev


2

そのためのWebサイトは必要ないかもしれません。ブラウザを開くだけで、 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();

(注:コードにバックティック文字( `)が含まれているため、コード形式が台無しになっているため、修正方法がわかりません)


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

この願いは利用できません。利用可能なウィッシュは次のとおりです:['application'、 'args'、 'authorization'、 'blueprint'、 'charset'、 'close'、 'cookies'、 'data'、 'date'、 'endpoint'、 'environ '、' files '、' form '、' headers '、' host '、' json '、' method '、' mimetype '、' module '、' path '、' pragma '、' range '、' referrer '、 「スキーム」、「浅い」、「ストリーム」、「url」、「値」]

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': '' '/ 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のようなKHTML)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 ':False、' HTTP_UPGRADE_INSECURE_REQUESTS ':' 1 '、' HTTP_ACCEPT ':' text / html、application / xhtml + xml、application / xml; q = 0.9、image / webp、1:5000 '、' wsgi.multithread ':False、' HTTP_UPGRADE_INSECURE_REQUESTS ':' 1 '、' HTTP_ACCEPT ':' text / html、application / xhtml + xml、application / xml; q = 0.9、image / webp、 /; q = 0.8 '、' wsgi.version ':(1、0)、' wsgi.run_once ':False、' wsgi.errors ':'、mode 'w' at 0x0000000002042150>、 'REMOTE_ADDR': '127.0.0.1 '、' HTTP_ACCEPT_LANGUAGE ':' en-US、en; q = 0.8 '、' HTTP_ACCEPT_ENCODING ':' gzip、deflate、sdch、br '}


-13

自分で設定してください。このスニペットをWebサーバーにコピーします。

エコー "<pre>";
print_r($ _ POST);
エコー "</ pre>";

必要なものをそのページに投稿してください。できました。


5
ポイントは、サーバーを使用する必要がないことです。たとえば、SOに質問を投稿したいが、サーバーが長くない場合があります。OPは、投稿のテストまたはデモンストレーションに使用できるjsfiddleなどの永続的なものを求めています。
abalter 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.