加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Flask 中的 HTTP 方法

发布时间:2023-06-29 14:12:29 所属栏目:教程 来源:
导读:本小节讲解常用的 HTTP 方法。并通过一个个具体的例子,说明如何在 Flask 中使用不同的 HTTP 方法。

Tips:本节课所有代码已经上传到了 Github,可以点击这里进行下载。

1. HTTP 协议简介
1.1 概述
HTTP 协议
本小节讲解常用的 HTTP 方法。并通过一个个具体的例子,说明如何在 Flask 中使用不同的 HTTP 方法。

Tips:本节课所有代码已经上传到了 Github,可以点击这里进行下载。

1. HTTP 协议简介
1.1 概述
HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写, 用于从万维网(World Wide Web)服务器传输超文本到本地浏览器的传送协议。

1.2 HTTP 请求消息
HTTP 协议是一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以 ASCII 码形式给出;而消息内容则具有一个类似 MIME 的格式。

浏览器向 Web 服务器发出请求时,它向服务器传递了一个请求信息,HTTP 请求信息由 3 部分组成:

请求行;
请求头;
请求正文。
以下是一个 HTTP 请求消息的例子:

GET / HTTP/1.1
Host: www.imooc.com
Connection: keep-alive
User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/81.0
Accept: text/html,application/xml;image/webp,image/png,*/*;

第一行是请求行,用来说明请求方法,要访问的资源,以及所使用的 HTTP 版本。在这个例子中,请求方法是 GET,要访问的资源是 /,HTTP 版本是 1.1,表示要获取网站首页 / 的内容。

请求头部之后是请求正文,在请求正文中可以添加任意的其他数据,这个例子的请求正文为空。

1.3 常用的 HTTP 方法
请求方法    功能
GET    请求指定 URL 的页面,这是最常见的方法
HEAD    类似于 GET 请求,但返回的响应中没有具体的内容,用于获取报头
POST    向指定 URL 的页面提交数据进行处理请求,例如提交表单或者上传文件
PUT    从客户端向服务器传送数据,取代指定 URL 的页面
DELETE    请求服务器删除指定 URL 的页面

2. Flask 中的 HTTP 方法
上面我们已经大概了解了什么是 HTTP 协议,简单来说就是客户端与服务端用来通信的协议,HTTP 协议中规定和很多 HTTP 方法来让我们根据不同的需求向服务端发起请求。下面我们通过一个具体的例子,说明如何在 Flask 中使用不同的 HTTP 方法:

from flask import Flask, request
app = Flask(__name__)
首先,导入类 flask.Flask 和 flask.request,request 封装了请求消息,可以获取请求的各种参数。

@app.route('/login', methods = ['GET'])
def login():
    return '''
<form action="/check_login" method="POST">
  <p><input type="text" name="name"/></p>
  <p><input type="password" name="password"/></p>
  <p><input type="submit" value="submit"/></p>
</form>
'''
定义处理路径 /login 的函数 login,装饰器 @app.route(’/login’, methods = [‘GET’]) 表示使用 GET 方法处理路径 /login 的请求。

函数 login 返回一段用于登录的 HTML 表单,表单包括 2 个字段: name 和 password。在第 4 行,指定使用 POST 方法提交表单给服务端的 /check_login 页面。

@app.route('/check_login', methods = ['POST'])
def check_login():
    name = request.form['name']
    password = request.form['password']
    if name == 'guest' and password == '123':
        return 'Login succeed'
    else:
        return 'Login Failed'
定义处理路径 /check_login 的函数 check_login,装饰器 @app.route(’/check_login’, methods = [‘POST’]) 表示使用 POST 方法处理路径 /check_login 的请求。

函数 check_login 根据请求的参数 name 和 password 是否正确,返回给用户相应的信息。在第 3 行,提取参数 name 的值,在第 4 行,提取参数 password 的值。如果 name 是 guest,password 是 123,则返回登录成功消息,否则返回登录失败消息。
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章