I’ve tested my REST API via Postman and tests and got a response, but when I use curl I’m getting
***@*** MINGW64 ~
$ curl http://localhost:80/api/v1/stats
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 267 100 267 0 0 1197 0 --:--:-- --:--:-- --:--:-- 1197<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>Redirecting...</title>
<h1>Redirecting...</h1>
<p>You should be redirected automatically to target URL: <a href="http://localhost/api/v1/stats/">http://localhost/api/v1/stats/</a>. If not click the link.
screen from postman enter image description here
the code:
app.py
app = Flask(__name__) app.register_blueprint(attack_bp, url_prefix=URL_PATH + '/attack') app.register_blueprint(stats_bp, url_prefix=URL_PATH + '/stats')
route.py
from flask import Blueprint
from controllers.Stats import index
stats_bp = Blueprint('stats_bp', __name__)
stats_bp.route('/', methods=['GET'])(index)
controller.py
from services import Services
s = Services()
def index():
return {"data": s.getStats()}
Advertisement
Answer
By default curl doesn’t follow redirection, you have to use -L argument.
In curl’s tradition of only doing the basics unless you tell it differently, it does not follow HTTP redirects by default. Use the -L, –location to tell it to do that.
Source: https://everything.curl.dev/http/redirects#tell-curl-to-follow-redirects