首页 > 其他分享 >Flask - Flask中的HTTP方法和URL组成部分

Flask - Flask中的HTTP方法和URL组成部分

时间:2022-12-20 22:35:48浏览次数:33  
标签:__ HTTP Flask app request URL

一、前言

参考:http://www.imooc.com/wiki/flasklesson/flaskhttp.html

上篇我们创建了第一个 Flask 程序,并且在浏览器中成功看到了 Flask 程序给我们返回的 Hello World。但是你有没有注意到,我们看到的内容只是在后台进行写死的,也就是说无论你怎么请求,看到的永远是 Hello World,无法根据自己的需求让 Flask 程序返回给你想要的内容?这该怎么办呢?不要急,我们有 HTTP 协议,HTTP 协议提供了多种方法访问服务端资源

二、常用的HTTP方法

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

  • 请求行;
  • 请求头;
  • 请求正文。

根据 HTTP 标准,常用的 HTTP 请求如下所示:

 

 三、Flask中的HTTP方法

1、GET方法

from flask import Flask

app = Flask(__name__)

# 不指定 methods,默认就是 GET
@app.route('/')
def hello_world():
    # 返回字符串
    return '<b>Hello World</b>'

@app.route('/get', methods=["GET"])
def get_():
    # 返回字符串
    return '这是get请求'


if __name__ == '__main__':
    app.run()

 默认的 app.route() 是仅支持 GET 请求的,如果想通过 POST、PUT、DELTE 等方法正常请求的话,需要添加 methods 参数

2、POST方法

from flask import Flask

app = Flask(__name__)

@app.route('/post', methods=["POST"])
def post_():
    # 返回字符串
    return {"message":"请求成功","code":"200"}

if __name__ == '__main__':
    app.run()

如果 return 的是字典,那么请求得到的响应数据是 Json 格式哦

四、URL组成部分

1、URL组成详解

一个常见的url:https://www.cnblogs.com/Chilam007/

由以下几部分组成:scheme://host:port/path?key=value

  • scheme:代表的是访问的协议,一般为 http 或者 https。例如,https://www.baidu.com 的协议是 https;
  • host:主机名、域名,例如,https://www.baidu.com 的 host 为 www.baidu.com;
  • port:端口号,http 协议默认使用 80 端口,https 协议默认使用 443 端口。通常情况下,使用默认值,不需要显式的写明端口号,例如,https://www.baidu.com 的端口是 443。某些情况下,可以显式的写明端口号,例如,http://localhost:5000 的端口号是 5000;
  • path:页面路径,例如:https://www.cnblogs.com/Chilam007/p/16991728.html的 path 是 Chilam007/p/16991728
  • key=value:查询字符串,例如:https://www.baidu.com/s?wd=python,查询字符串是 wd=python,查询字符串包括两部分:参数名和参数值,这个例子中,参数名是 wd,参数值是 python

2、在Flask中分析URL参数

  • 服务端收到将客户端发送的数据后,封装形成一个请求对象,在 Flask 中,请求对象是一个模块变量 flask.request
  • request 对象包含了众多的属性
  • 假设 URL 等于 http://localhost/query?userId=123,则与 URL 参数相关的属性如下:

 

 3、实际例子

from flask import Flask,request

app = Flask(__name__)

def echo(key, value):
    print('%-10s = %s' % (key, value))

# 定义路径 /query 的处理函数 query()
@app.route('/query')
def query():
    '''打印 request 对象中和 URL 相关的属性;URL 中的查询参数保存在 request.args 中'''
    echo('url', request.url)
    echo('base_url', request.base_url)
    echo('host', request.host)
    echo('host_url', request.host_url)
    echo('path', request.path)
    echo('full_path', request.full_path)
    print()

    print(request.args)
    # 打印查询参数 userId 的值
    print('userId = %s' % request.args['userId'])
    return 'hello'

if __name__ == '__main__':
    app.run()

 浏览器访问:http://127.0.0.1:5000/query?userId=123

控制台输出结果:

4、小结

标签:__,HTTP,Flask,app,request,URL
From: https://www.cnblogs.com/Chilam007/p/16995113.html

相关文章