尝试从端点网址获取数据时收到“ BadRequestKeyError”

时间:2019-07-02 20:08:34

标签: python rest flask

我试图使用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+""]*

如果有人能帮助我理解和解决此问题,我将不胜感激。

1 个答案:

答案 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.argssomething different,用于获取传入请求的参数。