GET / POST 요청을 수락하는 HTTP 테스트 서버


449

HTTP GET을 통해 기본 정보 요청을 수락하고 POST를 허용하는 라이브 테스트 서버가 필요합니다 (실제로 아무것도하지 않더라도). 이것은 전적으로 테스트 목적입니다.

좋은 예가 여기 있습니다 . GET 요청을 쉽게 수락하지만 POST 요청도 수락하는 요청이 필요합니다.

누구든지 내가 더미 테스트 메시지를 보낼 수있는 서버를 알고 있습니까?


2
POST를 로그하고 싶습니까?
자레드 패리쉬

4
이것은 당신이 원하는 것을합니다. github.com/jar-o/dumdum 코드 불필요
jar

답변:


736

http://httpbin.org/

다음 유형 중 하나에 대한 요청에 사용 된 데이터를 에코합니다.


요청한 내용을 설명하는 JSON을 반환합니다.
tbraun

4
로컬 httpbin 서버를 만들 수도 있습니까?
user3280180

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/post200을 반환합니다.
Robert

120

http://ptsv2.com/

"여기에는 POST를 제공하고 검토 할 내용을 저장하는 서버가 있습니다."


7
내부에 액세스 할 수없는 원격 서버에서 트리거 된 요청을 실행하는 경우 나중에 유용합니다. 나중에 검색하기 위해 요청을 저장합니다.
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 클라이언트가 무엇을 전송하는지 확인하거나 웹 후크 요청을 검사 및 디버그하십시오.

2018 년 3 월 21 일부로 폐지되었지만

지속적인 악용으로 인해 공개적으로 호스팅되는 RequestBin 버전을 중단하여 사이트를 안정적으로 유지하기가 매우 어려웠습니다. 자체 자체 호스팅 인스턴스 설정에 대한 지침 을 참조하십시오 .


3
PutsReq 도 RequestBin과 유사하지만 JS로 원하는 응답을 작성할 수 있습니다.
Pablo Cantero

2
RequestBin은 더 이상 사용할 수 없습니다.
AmokHuginnsson

29

PutsReq를 살펴보십시오 . 다른 것들과 비슷하지만 JavaScript를 사용하여 원하는 응답을 작성할 수도 있습니다.


2
훌륭한 사이트-가장 직관적 인 것처럼 보이며 요청 유형, 헤더, 양식 데이터 등을 확인하는 데 도움이되는 훌륭한 문서가 있습니다.
AlbatrossCafe

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
글쎄, 나는 리눅스에서 하나의 라이너를 선호한다 : 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 패키지를 널리 사용하고 우분투에 사전 설치되어 있습니다.

우분투 18.04에서 테스트되었습니다.


2
nc -kdl localhost 8000루프에서 청취하므로 bash가 필요하지 않습니다 while. 그러나 nc응답하지 않으므로 테스트 쿼리는 응답하지 않는 시간이 초과 될 때까지 기다립니다.
aks

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; donenc는 매번 200 OK 코드로 응답합니다.
nikniknik

6

다음은 하나의 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 시간 임시 계정).


agree에는 필요한 특정 응답을 설정할 수있는 유용한 기능이 있습니다. 즉, 200/301, 401 등. 오류를 시뮬레이트하려는 경우 또는 페이지를 렌더링 할 데이터가 다시 나타나지 않은 경우 Angular에서
리졸 브를


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 ();

(참고 : 코드 형식이 망가진 코드에 백틱 문자 (`)가 있으므로 수정 방법을 모릅니다)


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 ', 'scheme', 'shallow', 'stream', 'url', 'values']

http://127.0.0.1:5000/method/environ

{ 'wsgi.multiprocess': False, 'HTTP_COOKIE': 'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq', 'SERVER_SOFTWARE': 'Werkzeug / 0.12.2', 'SCRIPT_NAME': '', '요청 _MET'D': ' '/ 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 ':', 0x0000000002042150의 'w'모드, 'REMOTE_ADDR': '127.0.0.1 ','HTTP_ACCEPT_LANGUAGE ':'en-US, en; q = 0.8 ','HTTP_ACCEPT_ENCODING ':'gzip, 수축, sdch, br '}


-13

하나만 설정하면됩니다. 이 스 니펫을 웹 서버에 복사하십시오.

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

해당 페이지에 원하는 것을 게시하십시오. 끝난.


5
요점은 서버를 사용할 필요가 없다는 것입니다. 예를 들어, SO에 질문을 게시하고 싶지만 서버가 오래 있지 않은 경우 어떻게해야합니까? OP는 게시물을 테스트하거나 시연하는 데 사용할 수있는 jsfiddle과 같은 영구적 인 것을 요구하고 있습니다.
abalter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.