首页 > 其他分享 >两天学会flask(四)---请求对象request(5分钟)

两天学会flask(四)---请求对象request(5分钟)

时间:2023-04-21 16:00:42浏览次数:42  
标签:__ 请求 flask request --- print 客户端

request是flask框架的全局对象,你可以通过它来获得当前进入的请求数据,如果是在多线程环境下,flask可以保证你所使用的request对象就是当前这个线程所处理的请求。

关于request,最让人感到疑惑的地方在于,明明是一个全局变量,在使用时却提供了当前时刻的请求数据,而且,不同线程之间互不干扰,它是如何设计出来的呢,如果你关心此事,可以参考这篇文章todo

既然request是请求对象,那么合理的猜测是通过它,我们可以获得当前请求的全部信息,例如请求的method,path, url, headers,cookies,请求的参数,请求的body.....

事实上也的确如此,下面的服务端代码和客户端代码,将互相配合向你演示如何使用request获得有关当前请求的重要信息

服务端代码:

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


@app.route('/users', methods=['GET', 'POST'])
def users():
    print(request.method)       # 请求方法
    print(request.headers)      # 请求的headers
    print(request.path)         # 资源路径
    print(request.url)          # 完整的url
    print(request.remote_addr)  # 客户端IP
    print(request.cookies)      # 请求的cookie
    return 'ok'

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

客户端代码:

import requests

cookie_dict = {'name': 'python'}
res = requests.get('http://127.0.0.1:5000/users', cookies=cookie_dict)

使用客户端代码发出请求后,服务端程序会输出如下内容:

GET                  # 请求方法
Host: 127.0.0.1:5000
User-Agent: python-requests/2.28.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Cookie: name=python


/users              # 资源路径
http://127.0.0.1:5000/users               # 完整路径
127.0.0.1                  # 客户端ip
ImmutableMultiDict([('name', 'python')])     # 请求的cookie 

提醒一点,request.remote_addr并不一定能够准确的获得客户端的IP,因为在部署服务时,通常最前端用nginx做转发,这样,你获得其实是nginx的IP地址,而非用户的真实地址,如何准确获得客户端的IP地址,请参考文章https://www.cnblogs.com/mzhaox/p/11214747.html

标签:__,请求,flask,request,---,print,客户端
From: https://www.cnblogs.com/joyware/p/17340719.html

相关文章

  • 输出100-200之间所有的质数
    输出100-200之间所有的质数<script>lettotal=0;//计数器for(leti=100;i<200;i++){letnum=true;for(letq=2;q<i;q++){if(i%q==0)/*余数为零,能被整除*/{n......
  • 求出11-12+13-14…
    求出1/1-1/2+1/3-1/4…..1/100的和vari=1;(倒数和)首先分析题目,可以找出规律,分母为奇数时为累加,分母为偶数时累减。由此可以写出循环逻辑<script>letsum=0 //首先定义一个变量用来存放加减结果for(leti=1;i<=100;i++){if(i......
  • 求100-999之间的水仙花数
    求100-999之间的水仙花数水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。例如:1^3+5^3+3^3=153。<script>for(i=100;i<1000;i++){letc=i%10; /*个位*/letb=parseInt((i/10)%10); ......
  • 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
    打印出1000-2000年中所有的闰年,并以每行四个数的形式输出<script>varnum=0; //定义一个计数器for(letyear=1000;year<=2000;year++){if(year%4===0&&year%100!==0||year%400===0){document.......
  • ssh-keygen 生成.ssh文件
    ssh-keygen-trsa-C"[email protected]":生成最新OPENSSH格式的密钥对。openssh格式 ssh-keygen-mPEM-trsa-b4096-C"[email protected]"生成老版本的rsa格式的密钥对。rsa格式 参数说明-m:参数指定密钥的格式,PEM(也就是RSA格式)是之前使用的旧格式-b:指定密钥长度;-e:......
  • C#监控usb设备插拔--已经测试
    WindowsFormsApp---USBDevicefind监听usb插拔代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.IO;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingS......
  • 【汇智学堂】微服务-SpringBoot环境搭建之一maven下载安装
    一、下载maven3.6.2http://maven.apache.org/download.cgi下载完成后,解压到某个目录。本人目录如下。(C:\Users\leilei\Desktop\apache-maven-3.6.2-bin\apache-maven-3.6.2)二、配置环境变量系统环境变量里,添加MAVEN_HOME(或M2_HOME),其值为C:\Users\leilei\Desktop\apache-maven......
  • 【汇智学堂】JAVA多线程实现的小游戏-龟兔争霸-2
    角色入场:publicvoidpaint(Graphicsg){g.clearRect(0,0,1600,900);Imageimage=newImageIcon("D:\\综合案例\\10\\src\\tu.png").getImage();//获取图片资源g.drawImage(image,PositionA-50,100,RecWidth,RecHeight......
  • 【汇智学堂】JAVA多线程实现的小游戏-弹球-2
    显示球板Ui类/**\*定义界面*显示球板*/packagecom.huizhi;importjavax.swing.*;importjava.awt.*;publicclassUiextendsJFrame{staticintPositionA=50,RecWidth=50,RecHeight=20;publicUi(){setTitle("弹球游戏");......
  • 【汇智学堂】swagger-UI使用测试
    now,Letusbegin.1、downloadfromGitHubhttps://github.com/swagger-api/swagger-ui.git2、3、adddependency<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.......