#符号切碎URL文本Flask Application

时间:2017-07-18 04:38:11

标签: python python-3.x flask

我使用以下代码在浏览器上显示文字:

from flask import Flask, jsonify, make_response, request    
app = Flask(__name__)

@app.route('/api/v1.0/qanda/', methods=['GET'])

def people_api():
    text = request.args.get('text'.replace('#',' ' ))
    if text is None:
           make_response(jsonify({'error': 'Missing text parameter'}), 400)
    return text
app.run()

当我尝试这个时:

http://127.0.0.1:5000/api/v1.0/qanda/?text=adam is my name

我的输出为:

adam is my name

但是当我尝试这个时:

http://127.0.0.1:5000/api/v1.0/qanda/?text=adam# is my name

我的输出为:

adam

我尝试替换#符号,但它不起作用。我想知道,如果我想使用上面的URL在浏览器中显示我的文字,我需要做什么?我想显示完整的文本,但只是因为#符号出现了这个问题,这是我想的。请建议我。

2 个答案:

答案 0 :(得分:0)

你不能把#作为请求参数中的值,就像?,&,/,&,= 如果您确实希望在请求参数的值中发送#,那么您必须对其进行URL编码以将其传送到服务器。否则它将永远不会像您期望的那样到达服务器。 对于#的编码,你必须使用%23。 由于您的请求网址应该像http://127.0.0.1:5000/api/v1.0/qanda/?text=adam%23是我的名字

答案 1 :(得分:0)

#符号(如? /&=在用作网址的一部分时具有特殊含义。

#专门用于识别HTML中的命名锚点;所以浏览器不会将其作为请求的一部分发送。

在提交之前坚持使用空格或URL编码字符串。