优秀的编程知识分享平台

网站首页 > 技术文章 正文

Flask http协议和get请求(flask官网)

nanyue 2024-10-21 06:17:45 技术文章 5 ℃

HTTP协议

HTTP协议(也叫作超文本传输协议):规定了请求和响应格式。通俗来说就是互联网的一种网络传输协议,所有的网页的请求响应都必须遵守这个标准。比如客户端发送信息请求/pig页面,那么服务端就要回复信息OK,页面已返回作为响应,目的就是让信息能够快速准确的传达。

HTTP请求格式

HTTP请求由请求行、请求头、请求体组成。

HTTP请求行

HTTP请求行结构是:请求方式 + 路由 + HTTP版本

  • 请求方式:也叫请求方法,就是告诉服务器要执行什么操作,比如GET请求,除了GET,还有删除、更新等请求方式。
  • 路由:对应flask中route方法绑定的地址/pig,刚才的请求方式就表示要执行什么操作,那对谁进行操作呢?就是对这里的路由。
  • HTTP版本:HTTP协议最初是一个版本,后来根据新需要,更新一部分内容,就命名为新的版本号。目前最新的是2.0版本,使用较多的是1.1版本。

HTTP请求头

请求头由关键字组成,每行一对,关键字和值用英文冒号:分隔。,比如 Accept:*/*表示浏览器可接受的文件类型,Host: 127.0.0.1:8000表示主机和端口号,User-Agent: HTTPie/2.0.0表示浏览器类型。

HTTP请求体

HTTP请求体也叫请求正文,结构是也是关键字 组成,关键字和值用等于号连接,多个“关键字=值”中间用“&”符号连接。举例:比如登录请求中,要发送 用户名和密码,就是name=tom&password=1234。

HTTPie

想要查看请求信息,就要用到HTTPie这个工具,它是一个 HTTP 客户端,可以发送任意 HTTP 请求,不过需要我们安装一下,执行pip install httpie命令即可。打开cmd 命令窗口,输入http关键字 然后输入请求的url 最后,加入参数-v表示打印请求和响应信息。

GET请求参数:form表单

表单就是用来将数据打包,发送给服务器的工具。其实也可以使用form表单提交GET请求参数给服务器。

首先在form表单中可以添加属性method='get',表示请求方式是GET。然后在input标签中,给name属性赋值为kw,这样,在提交表单后,会在URL末尾加上问号?,问号后面加上“参数=值”这样的字符串,这里的参数就是kw,值就是在input框里输入内容 “鸡蛋汤”。以这种方式将数据添加在url中传递给服务器。

<form class="order" action='/order' method="get">
    <input type="text" name='kw'>
    <input type="submit" value="确定">
</form>

request

GET请求没有请求体,所以发送请求的时候有请求行和请求头,请求行又包含路由、请求方式等。请求头包含浏览器类型、主机端口号等。

那么多内容,格式也不一样,我们自己整理很麻烦,flask早就给我准备了一个小助手,这个助手就是request。把请求中所有的内容都装在了口袋里,比如有请求头信息headers,请求地址url,还有参数信息args,GET请求参数就可以通过它得到!

接收GET请求参数

首先从flask模块中导入request,然后通过request.args.get()方法获取GET请求传递的数据,参数kw。kw就是form表单中input标签的name属性值。

项目目标:模拟百度搜索页面,在搜索框中输入关键字,点击百度一下,发送请求给服务器,服务器接收到搜索的内容,返回响应,内容就是要搜索的关键字。

首先客户端发送的是GET请求,地址是/search,携带参数,用问号拼接在地址后面。然后服务器接收GET请求数据,返回:查询的信息是XXX。

from flask import Flask, render_template, request


app = Flask(__name__)
app.debug = True

@app.route('/', methods=['GET'])
def baidu():
    return render_template('baidu.html')


@app.route('/search', methods=['GET'])
def search():
    # 在下方写你的代码:获取GET请求传递的数据
    key_words = request.args.get('kw')

    return '<h1>您搜索的内容是:%s</h1>' % key_words


app.run(host='127.0.0.1', port=8000)
最近发表
标签列表