我试图使用Python和flask实现API,以帮助自己学习和练习REST。
这个想法是接收一个HTTP POST,其中包含如下所示的数据: {“ startDate”:“ 2015-07-01”,“ endDate”:2015-07-08“,” intra“:{” value“:9000,” units“:miles}}并将部分数据发送到NASA API(端点)。
我能够创建POST方法,并且能够接收数据(在POSTMAN和浏览器中)。这是相关代码:
@neows.route('/UserInput',methods=['GET','POST'])
def UserInput():
startDate = request.args.get('startDate')
endDate = request.args.get('endDate')
#print (type(startDate))
#print (type(endDate))
getAsteroids(startDate,endDate)
return jsonify(request.args)
但是当我从上面的POST中提取一些数据以发送到NASA API(GET)时,我收到此错误:
werkzeug.exceptions.BadRequestKeyError
这是我要输入的网址:(https://api.nasa.gov/neo/rest/v1/feed?start_date=START_DATE&end_date=END_DATE&api_key=API_KEY)
我可以在代码之外的POSTMAN和浏览器上访问该网址。
与错误相关的代码发布在下面,并且似乎抛出错误的行在斜体中(标记为*)。
def getAsteroids(startDate,endDate):
API_KEY='xxx'
print (startDate)
print (endDate)
*result=request.args["https://api.nasa.gov/neo/rest/v1/feed?
start_date="+startDate+"&end_date="+endDate+"&api_key="+API_KEY+""]*
如果有人能帮助我理解和解决此问题,我将不胜感激。
答案 0 :(得分:0)
如果要针对NASA的API进行请求,则可以使用requests
模块。 (或其他任何发送HTTP请求的模块)
import requests
# ...
def getAsteroids(startDate, endDate):
API_KEY='xxx'
payload = {'start_date': startDate, 'end_date': endDate, 'api_key': API_KEY}
result = requests.get('https://api.nasa.gov/neo/rest/v1/feed', params=payload)
request.args
是something different,用于获取传入请求的参数。