haifeima

 

举例1,返回当前时间接口

\'\'\'
初始化:所有的Flask都必须创建程序实例,
web服务器使用wsgi协议,把客户端所有的请求都转发给这个程序实例
程序实例是Flask的对象,一般情况下用如下方法实例化
Flask类只有一个必须指定的参数,即程序主模块或者包的名字,__name__是系统变量,该变量指的是本py文件的文件名
\'\'\'
from flask import Flask
import datetime

server=Flask(__name__)

@server.route(\'/time\',methods=[\'post\',\'get\'])
def get_time():
    now=str(datetime.datetime.now())#把当前时间转换成字符串
    return "当前的时间是:%s"%now


server.run(port=8888)

 

执行后网页显示如下:

举例2:怎样跳转到你的网站

1、先写好一个HTML前端页面(例如我随便写了一个index.html放在了当前路径下)

 

2、写接口,返回html前端页面。

import flask

server=flask.Flask(__name__)

@server.route(\'/index\')
def my_page():
    f=open(\'index.html\',encoding=\'utf-8\')
    res=f.read()
    f.close()
    return  res

server.run(port=8888)

 

 

3、执行后网页显示如下:

 

 

举例3:登录接口

flask获取请求参数、连接数据库

1、传参
2、执行sql查数据库(已有该表)
3、返回结果

import flask
import json
import tools

server=flask.Flask(__name__)

@server.route(\'/login\',methods=[\'post\'])
def login():
    #登录需要两个参数,name和pwd
    uname=flask.request.values.get(\'username\')# 传参,前面的是变量,括号里面是key
    passwd=flask.request.values.get(\'password\')
    #args只能获取到跟在url后面的参数,所以我们改用values

    if uname and passwd:# 非空为真
        # 需要先写一个导入数据库的函数,例如我写了一个名称为tools的函数(如图),放在另一个python文件中,import tools进行调用。当然也可以直接写在本python文件中,但是显得会累赘。
        sql="SELECT * FROM app_myuser WHERE username=\'%s\' AND passwd=\'%s\';"%(uname,passwd)
        result = tools.my_db(sql)#执行sql
        if result:
            res={"error_code":1000,"mag":"登录成功"}# 接口返回的都是json,所以要这样写。先导入json模块,import json。
        else:
            res = {"error_code": 3001, "mag": "账号或密码错误!"}
    else:
        res={"error_code":3000,"mag":"必填参数未填,请查看接口文档!"}

    return  json.dumps(res,ensure_ascii=False)#防止出现乱码;json.dumps()函数是将字典转化为字符串

server.run(port=8888)

 

操作数据库的函数如图:

import pymysql

def my_db(sql):
    conn=pymysql.connect(
        host=\'118.24.3.40\',
        user=\'jxz\',
        password=\'123456\',
        db=\'jxz\',
        charset=\'utf8\',
        autocommit=True# 自动提交

    )
    cur=conn.cursor(cursor=pymysql.cursors.DictCursor)# 建立游标;默认返回二维数组,DictCursor指定返回字典;
    cur.execute(sql)#execute帮你执行sql
    res=cur.fetchall()#拿到全部sql执行结果
    cur.close()# 关闭游标
    conn.close()# 关闭数据库
    return res # 返回sql执行的结果

 

 

调用接口服务如图(借助postman):

 

 

举例4:新增学生接口

flask获取请求参数、连接数据库;入参是json类型,参数有限制。

 

import flask
import json
import tools

server=flask.Flask(__name__)

@server.route(\'/add_student\',methods=[\'post\'])
def add_student():
    params=flask.request.json #入参是字典json时用它,下面的代码要判断传入的参数是否是json类型
    if params:
        name=params.get(\'name\')
        sex=params.get(\'sex\',\'\')# 如果没有传。默认值是男
        age=str(params.get(\'age\'))# int
        addr=params.get(\'addr\')
        grade=params.get(\'grade\')
        phone=str(params.get(\'phone\'))# 最少11位,不能重复
        gold=str(params.get(\'gold\',500)) # 金币可以是小数,如果没有传默认是500

        if name and age and addr and grade and phone:# 必填参数校验

            if sex not in[\'\',\'\']: #如果性别不是男或者女
                res = {"error_code": 3003, "msg": "性别只能是男或者女"}
            elif not age.isdigit():# 如果不是整数类型
                res = {"error_code": 3004, "msg": "年龄输入错误"}
            elif len(phone)!=11 or not phone.isdigit():
                res = {"error_code": 3005, "msg": "手机号输入错误"}
            elif not gold.isdigit() and not tools.check.float(gold):#如果不是整数也不是小数
                res = {"error_code": 3006, "msg": "金币输入错误"}
            else:
                sql="select* from app_student where phone=\'%s\';"%phone #查看数据库中是否有这个手机号,有的话说明重复
                result = tools.my_db(sql)  # 执行sql
                if result:
                    res = {"error_code": 1000, "msg": "手机号已经存在"}
                else:
                    sql = "INSERT INTO app_student(NAME,sex,age,addr,grade,phone,gold)VALUES(\'%s\',\'%s\',%s,\'%s\',\'%s\',%s,\'%s\')" % (
                        name, sex, age, addr, grade, phone, gold)
                    tools.my_db(sql)
                    res = {"error_code": 200, "msg": "新增成功! "}
        else:
            res = {"error_code": 3007, "msg": "必填参数未填写"}
    else:
        res={"error_code":3002,"msg":"入参必须是json类型"}
    return  json.dumps(res,ensure_ascii=False)#防止出现乱码

server.run(port=8888)

 

调用接口服务如图(借助postman):

 

举例5:上传文件接口

上传文件时加上当前日期

 

import flask
import json
import datetime

server=flask.Flask(__name__)

def file_upload():
    f=flask.request.files.get(\'wjm\',None)# 上传文件,取一个名字,再给名字一个默认值None
    if f:# 如果文件不为空
        cur_time=datetime.datetime.now().strftime("%Y%m%d%H%M%S")# 如果上传同一个文件两次,会被覆盖,所以加一个当前日期,并指定日期格式strftime("%Y%m%d%H%M%S")
        new_file_name=cur_time+f.filename# 新文件名=时间+原来的文件名
        f.save(new_file_name)#保存文件
        res={"msg":"文件上传成功"}
    else:
        res={"msg":"没有上传文件"}
    return  json.dumps(res,ensure_ascii=False)#防止出现乱码

server.run(port=8888)

 

调用接口服务如图(借助postman):

  

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
  • 2021-11-23
  • 2023-02-08
  • 2022-12-23
猜你喜欢
  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案