如何使用Flask的request模块发起URL GET请求?
request Module vs. Sending GET Requests Hey there! Let's clear up a key confusion first: Flask's built-in request module isn't meant to send HTTP GET requests to external URLs—it's designed to handle incoming requests that your Flask server receives from clients (like browsers, mobile apps, or other services).
If your goal is to initiate a GET request to an external API from within your Flask application, you’ll still want to use the requests library you’re already familiar with! There’s no conflict between Flask and requests—they work perfectly together. Here’s a quick example of how to implement this in a Flask route:
from flask import Flask import requests app = Flask(__name__) @app.route('/fetch-external-data') def fetch_external_data(): # Send a GET request to the external API (just like you did before) try: response = requests.get("https://someapi.io/api/data") response.raise_for_status() # Raise an error for HTTP status codes >=400 external_data = response.json() # Process or return the data as needed return {"status": "success", "data": external_data} except requests.exceptions.RequestException as e: # Handle errors (e.g., connection issues, API errors) return {"status": "error", "message": str(e)}, 500 if __name__ == '__main__': app.run(debug=True)
If You Actually Want to Handle Incoming GET Requests with Flask's request Module
If you’re trying to access data from a GET request sent to your Flask server (like query parameters or request metadata), that’s where Flask's request module shines. Here are common use cases:
Get query string parameters (e.g.,
https://your-flask-app.com/user?id=123&name=Alice):from flask import Flask, request app = Flask(__name__) @app.route('/user') def get_user_details(): # Retrieve a single query parameter (with a default if it's missing) user_id = request.args.get('id', default=None) username = request.args.get('name', default='Guest') if not user_id: return {"error": "User ID is required"}, 400 return {"user_id": user_id, "username": username}Access full request details:
@app.route('/request-info') def show_request_info(): full_url = request.url client_ip = request.remote_addr request_method = request.method return { "requested_url": full_url, "client_ip": client_ip, "method": request_method }
To recap:
- Use
requestslibrary to send GET requests to external services from your Flask app. - Use Flask's
requestmodule to receive and process GET requests sent to your Flask server.
内容的提问来源于stack exchange,提问作者Kingsley Torlowei

