无法使用python发送GET请求
问题描述:
我在javascript中执行字符串操作,然后我的后端将数据更新到数据库。无法使用python发送GET请求
简而言之,我有一个用于发送数据到后端的url,然后这个数据被发送到javascript fucntion,js操作和使用ajax请求我发送操纵字符串到后端,这更新了我的数据库。
我用的烧瓶框架
这里是我写到目前为止
#this url is where I send a GET request
@app.route('/api',methods=['GET'])
def text():
text = request.args.get('text','')
lang = request.args.get('lang','')
return render_template('test.html',text=text,lang=lang)
现在JS做字符串的操作,并发送一个AJAX GET请求以下网址
@app.route('/files/<text>',methods=['GET'])
def fi(text):
if request.method == 'GET':
textValue = text.encode("utf-8")
INSERT_DB = 'INSERT INTO text (text) VALUES (%s)'
db = connect_mysql()
cursor = db.cursor()
cursor.execute(INSERT_DB,[textValue])
db.commit()
cursor.close()
db.close()
return ''
现在我检查数据是否保存到数据库或不在以下url
@app.route('/test',methods=['GET'])
def test():
if request.method == 'GET':
db_select_last = "SELECT text FROM text order by id DESC limit 1"
db = connect_mysql()
cursor = db.cursor()
cursor.execute(db_select_last)
data = cursor.fetchone()
cursor.close()
db.close()
return (data['text'])
但是,我面临的问题是,当我手动从浏览器中打开url更新数据。但是当我从python发送GET请求时,它不会。这是为什么。
以下是我发送一个GET请求到该网址
main_url是http://fyp-searchall.rhcloud.com/
>>> import requests
>>> url = 'http://fyp-searchall.rhcloud.com/api?text=some body&lang=marathi'
>>> r = requests.get(url)
但数据不更新。我在哪里做错了?
我知道JS只在浏览器中有效,所以我现在应该怎么做?
答
在请求你应该通过查询参数作为一个字典,使用params
关键字:
import requests
url = 'http://fyp-searchall.rhcloud.com/api'
params = {'text': 'some body', 'lang': 'marathi'}
r = requests.get(url, params=params)
参考Quickstart这里:http://docs.python-requests.org/en/master/user/quickstart/