一、开发接口的作用

  1、mock 服务:在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功、支付失败。

  2、了解接口是如何实现的:数据交互、数据返回

  3、开发给别人查看数据,避免其他人直接操作、查看数据库

二、 flask

flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。

flask需要先安装再引用。pip install flask

用flask开发接口的流程为:

1、定义一个server

server=flask.Flask(__name__) #__name__代表当前的python文件。把当前的python文件当做一个服务启动

2、然后定义接口函数,一般函数和接口函数的区别在于,定义为接口的函数上方要特别加上:

@server.route('/index',methods=['get','post']) #第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get,也可以指定一个

@server.route('/index',methods=['get','post'])#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get
def index():
res={'msg':'这是我开发的第一个接口','msg_code':0}
return json.dumps(res,ensure_ascii=False)#转成字符串类型

三、接口开发的步骤

  1、实例化server

  2、装饰器下面的函数变为一个接口

  3、启动服务

  简单的接口开发示例:

import flask,json
server = flask.Flask(__name__) # 实例化server,把当前这个python文件当作一个服务,__name__代表当前这个python文件
@server.route('/index',methods=['get']) # 'index'是接口路径,如methods不写,则默认get请求
# 装饰器,下面的函数变为一个接口
def index():
res = {'msg':'这是我开发的第一个接口','msg_code':''}
return json.dumps(res,ensure_ascii=False)
# json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False server.run(port=8888,debug=True,host='0.0.0.0') # 启动服务;端口不写默认是5000,也可以自定义,但注意不要与机器上已占用的port起冲突,
# debug=True,改了代码后,不用重启,它会自动加载重启
# 'host='0.0.0.0'同一局域网下,别人可以通过IP访问
# 最终这个接口的访问地址就是 http://127.0.0.1/index ,get方法。返回数据是json格式res内容

接口访问中,经常会需要输入参数。那么如果要接受传入的参数,则可用以下方法:

username=flask.request.values.get('username')

  示例:开发一个登录接口

import flask
import tools #自己写的py,里面写了一些下面需要调用的函数
import json
server = flask.Flask(__name__)
#新建一个服务,把当前这个python文件当做一个服务 #开发一个登录接口
@server.route('/login',methods=['get'])
def login():
uname = flask.request.values.get('username')
pd = flask.request.values.get('passwd')
sql = 'select * from app_myuser where username="%s"'%uname
res = tools.my_db(sql) #tools里的函数:连接数据库,执行sql并返回结果
if res:
if tools.my_md5(pd) == res.get('passwd'): #tools里的函数,加密密码
res = {"code":0,"msg":"登录成功!"}
else:
res = {"code":1,"msg":"密码错误!"}
else:
res = {'code':2,"msg":"用户不存在"}
return json.dumps(res,ensure_ascii=False,indent=4) #输出json格式 server.run(host='0.0.0.0',port=8998,debug=True) #以上接口访问地址即:http://127.0.0.1:8998/login?username=usertest&passwd=123123

  tools里面封装的函数如下:

import pymysql  #连接数据库,执行sql并返回sql执行结果
def my_db(sql):
conn = pymysql.connect(host='110.10.1.10',user='xxx',password='',
db='db1',port=3306,charset='utf8',autocommit=True)
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute(sql)
res = cur.fetchone() #{'username':'test'} {}
cur.close()
conn.close()
return res import hashlib
def my_md5(s,salt=''): #md5加密
s = s+salt
news = str(s).encode()
m = hashlib.md5(news)
return m.hexdigest() if __name__ == '__main__':
#判断如果是在别的文件里面导入这个python文件的话,就不执行下面的代码
print(strTotimestamp())
print(clean_log('.'))
print(clean_log('.',2))

python之接口开发基础知识的更多相关文章

  1. web接口开发基础知识-什么是web接口?

    比如我们访问百度的首页,输入的url地址是:https://www.baidu.com/ 那么当我们在浏览器地址栏中输入url,敲回车后,发生了什么事情?怎么就能通过1个url地址就能看到百度的首页了 ...

  2. IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

    1.前言 一个安全的信息系统,合法身份检查是必须环节.尤其IM这种以“人”为中心的社交体系,身份认证更是必不可少. 一些PC时代小型IM系统中,身份认证可能直接做到长连接中(也就是整个IM系统都是以长 ...

  3. Python运维开发基础09-函数基础【转】

    上节作业回顾 #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 实现简单的shell命令sed的替换功能 import ...

  4. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  5. Python运维开发基础03-语法基础 【转】

    上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...

  6. Python运维开发基础02-语法基础【转】

    上节作业回顾(讲解+温习60分钟) #!/bin/bash #user login User="yunjisuan" Passwd="666666" User2 ...

  7. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  8. Python运维开发基础08-文件基础【转】

    一,文件的其他打开模式 "+"表示可以同时读写某个文件: r+,可读写文件(可读:可写:可追加) w+,写读(不常用) a+,同a(不常用 "U"表示在读取时, ...

  9. Python运维开发基础05-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...

随机推荐

  1. 2018.02.12 noip模拟赛T2

    二兵的赌注 Description游戏中,二兵要进入了一家奇怪的赌场.赌场中有n个庄家,每个庄家都可以猜大猜小,猜一次一元钱.每一次开彩前,你都可以到任意个庄家那里下赌注.如果开彩结果是大,你就可以得 ...

  2. vue2.0项目实战(2)使用 vue-cli 搭建项目

    Vue-cli是官方推荐的快速构建单页应用的脚手架.官方给的建议,如果你是初次尝试Vue,哪就老老实实用普通的书写引入js文件,这里牵扯太多的东西,例如webpack .npm .nodejs 等等, ...

  3. (七)修改上一条SQL语句,NULL值的滤空函数nvl

    修改上一条SQL语句 1.用c命令来修改(c 即 change ) 默认,光标闪烁位置指向上一条SQL语句的第一行.输入二则定位到第二行. c /错误的关键字/正确的关键字 SQL form emp; ...

  4. windows环境下 安装python2和python3

    一.  python 安装 1. 下载安装包 https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi # 2.7安装包 htt ...

  5. mongoDB-权限控制

    启动服务D:\MongoDB\Server\3.6\bin>mongod.exe --dbpath D:\MongoDB\Server\3.6\data 扩展 无认证启动:mongod --po ...

  6. HTML学习笔记Day7

    一.position定位属性,检索对象的定位方式 1.语法:{position:static(无特殊定位)/absolute(绝对定位)/relative(相对定位)/fixed(固定定位):} 1) ...

  7. Vue(基础七)_webpack使用工具(下)

    一.前言  1.webpack.config文件配置                                          2.webpack打包css文件                 ...

  8. Vue(基础七)_webpack打包工具用法(上)

    一.前言 1.webpack原理 二.主要内容 1.webpack原理: (1)官网图:我们的项目有多个js, css文件的时候还需要考虑先引入哪一个后引入哪一个,因为这些js文件是相互依赖的,web ...

  9. 安装 java环境 和 tomcat

    安装 java环境 和 tomcat -- JAVA部分 tar xf jdk-8u60-linux-x64.tar.gz cd /root/soft/jdk1.8.0_60 mkdir /usr/l ...

  10. Redis作为lru缓存作用

    当 Redis 作为缓存使用时,当你添加新的数据时,有时候很方便使 Redis 自动回收老的数据.LRU 实际上是被唯一支持的数据移除方法.Redis 的 maxmemory 指令,用于限制内存使用到 ...