Python接口开发

一、flask

flask是一个python编写的轻量级框架,可以使用它实现一个网站、web服务。

用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)

3、让server执行起来

server.run(port=7777,debug=True,host=‘0.0.0.0‘)
#port可自定义填写。不要与机器上已占用的port冲突。
#debug=True,在代码进行修改后,程序会自动重新加载,不用再次运行。也就是运行一次即可,即使改动代码,也不需要重启服务
#host本地ip地址,写0.0.0.0,可以让其他人直接访问本机的ip。
#最终这个接口的访问地址就是  http://127.0.0.1/index  ,get方法或者post方法都可。返回数据是json格式res内容

示例:

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

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

server.run(port=7777,debug=True,host=‘0.0.0.0‘)

接口访问中,经常会需要输入参数。那么如果要接受传入的参数,则可用方法:username=flask.request.values.get(‘username‘)

示例:

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

@server.route(‘/reg‘,methods=[‘post‘])#只有在函数前加上@server.route (),这个函数才是个接口,不是一般的函数
def reg():
    username=flask.request.values.get(‘username‘)
    passwd=flask.request.values.get(‘passwd‘)
    if username and passwd:
        sql=‘select * from my_user where username="%s";‘%username
        print(sql)
        if my_db(sql):
            res={‘msg‘:‘用户已存在‘,‘msg_code‘:2001}
        else:
            insert_sql=‘insert into my_user (username,passwd,is_admin) values ("%s","%s",0);‘%(username,passwd)
            my_db(insert_sql)
            res={‘msg‘:‘注册成功‘,‘msg_code‘:0}
    else:
        res={‘msg‘:‘必填字段未填,请查看接口文档‘,‘msg_code‘:1001} #1001表示必填接口未填
    return json.dumps(res,ensure_ascii=False)
server.run(port=7777,debug=True,host=‘0.0.0.0‘)
#端口不写默认是5000.debug=True表示改了代码后不用重启,会自动帮你重启.host写0.0.0.0,别人就可以通过ip访问接口。否则就是127.0.0.1

二、cookie操作处理

假设在做登录接口的时候,要添加cookie到本地,则需要对接口返回的json串做一下操作:

res = flask.make_response(json_res) #json_res是接口返回数据。然后对json_res在做操作,构造成返回结果的对象
res.set_cookie(key,session_id,3600) #最后的数字是cookie的失效时间。这样设置以后,在执行登录接口成功登录,则会同时在本地加入cookie。其中key和session_id的值根据实际情况定义

示例:

@server.route(‘/login‘,methods=[‘get‘])
def login():
    username = flask.request.values.get(‘username‘)
    pwd = flask.request.values.get(‘pwd‘)
    if username == ‘zy‘ and pwd==‘123456‘:
        session_id = tools.my_md5(username+time.strftime(‘%Y%m%d%H%M%S‘))
        key = ‘txz_session:%s‘%username
        tools.op_redis(key,session_id,600)
        res = {‘session_id‘:session_id,‘error_code‘:0,‘msg‘:‘登录成功‘,
               ‘login_time‘:time.strftime(‘%Y%m%d%H%M%S‘) } #给用户返回的信息
        json_res = json.dumps(res,ensure_ascii=False)#返回结果弄成json
        res = flask.make_response(json_res)  #构造成返回结果的对象
        res.set_cookie(key,session_id,3600) #最后的数字是cookie的失效时间。
        return res

以上操作可成功保存cookie到本地。以后接口中需要使用coookie的时候,只需获取:

cookies = flask.request.cookies  #所有的cokies,是个字典。然后可通过字典获取到对应的cookie,并执行操作

示例:在做一些操作的时候,必须在登录状态下才可以,这时候就可以直接拿本地登录时的cookie中内容和服务器中的内容进行比对,如果有一致的,说明已成功登录

@server.route(‘/posts‘)
def posts():
    cookies = flask.request.cookies  #所有的cokies
    username = ‘‘  #
    session = ‘‘#定义这两个变量是为了,在没有传cookie的时候用的。
    for key,value in cookies.items():
        if key.startswith(‘txz_session‘): #判断cookie以txz_session开头的话,取到它
            username = key
            session = value  #调用接口的时候用户传过的seesion,从cookie里面取过来的
    redis_session = tools.op_redis(username) #从redis里面获取到的的cookie
    if redis_session == session:  #判断传过来的seeion和redis里面的session一样
        title = flask.request.values.get(‘title‘)#获取文章标题
        conent = flask.request.values.get(‘content‘)#获取文章内容
        article_key =‘article:%s‘%title     #key都以article开头
        tools.op_redis(article_key,conent) #把文章写入redis
        res = {‘msg‘:‘文章发表成功!‘,‘code‘:0}
    else:
        res = {‘msg‘:‘用户未登录!‘,‘code‘:2009}

    return json.dumps(res,ensure_ascii=False)

原文地址:https://www.cnblogs.com/YSPXIZHEN/p/11441108.html

时间: 2024-08-01 08:29:56

Python接口开发的相关文章

Python 接口开发-泛微OA的SOAP接口

一.功能需求 泛微e-cology可以在流程中调用Webservice接口实现与其他系统的联动等复杂功能.但是目前泛微文档中仅提供了调用的方法,但是没有关于接口的相关开发信息. 本次案例是用Python开发一个泛微e-cology 可以调用的Webservice接口. 二.所需要的库 pip install spyne 对于Python3 pip install spyne==2.13.4a1 三.代码实现 from spyne.protocol.soap import Soap11 from

每天进步一点点——Ganglia的Python扩展模块开发

转载请说明出处:http://blog.csdn.net/cywosp/article/details/39701245 注:本文涉及到的代码都在centos 6.5 64bit系统上通过验证,Ganglia版本为3.1,通过yum安装具体步骤请参考: http://blog.csdn.net/cywosp/article/details/39701141 1. 概述 Ganglia 项目是由加州大学发起的,现在已经成为一个应用非常广泛集群监控软件.可以监视和显示集群中的节点的各种状态信息,比如

2019虫师自动化 Python接口自动化虫师 robotframework虫师 虫师接口自动化源码下载

第一套:Python虫师自动化 [5.1G]┃ ┣━━Python接口测试 [2.7G]┃ ┃ ┣━━code [23.9K]┃ ┃ ┃ ┗━━myweb01.zip [23.9K]┃ ┃ ┣━━Python Web 接口开发与测试7_28.pdf [6.1M]┃ ┃ ┣━━02.(第二节)python_install.mp4 [82M]┃ ┃ ┣━━03.(第三节)python_calss_and_mudule.mp4 [126.9M]┃ ┃ ┣━━04.(第四节)python_excepti

python的flex服务端数据接口开发

python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted有很好的异步机制. 下面的我写的一个简单的验证用户的python服务端: ______________________________DBServer.py # Copyright (c) 2009-2010 The Newjh Project."""@author: Roy@s

python编程:excel文件操作,redis数据库,接口开发

1.操作mysql import pymysql # 1.连上数据库 账号.密码 ip 端口号 数据库 #2.建立游标 #3.执行sql #4 .获取结果 # 5.关闭游标 #6.连接关闭 coon = pymysql.connect( host='数据库ip',user='jxz',passwd='123456', port=3306,db='jxz',charset='utf8' #port必须写int类型, #charset这里必须写utf8 ) cur = coon.cursor() #

python基础学习6-mongodb、sys、接口开发、操作excel

1       mysql补充 cur = conn.cursor(cursor=pymysql.cursors.DictCursor)    #直接获取的数据转换为字典格式的 cur.description                   #直接获取的描述信息 fileds = [filed[0] for filed in cur.description]        #列表生成式,获取到第一行所有的字段 import pymysql,xlwtconn = pymysql.connect

测开6 - Python(网络编程、接口开发)

python课的开头我已经反复听了好几遍了,始终没有接触到网络编程和接口开发这部分.再加上上周的课因为公司出游耽误了,内心其实还是很忐忑的,很担心跟不上进度或者跟的吃力,之后就没有什么动力和正向反馈支撑我继续学习了.一整天的课听下来觉得好像也没有想象中那么难,主要还是零散的知识点,容易出现眼睛会了脑子不会的情况辣!??????  1?? 网络编程 主要是发送请求??拿到结果??对结果进行处理.用到的是 request 模块,以下通过请求的不同类型来分别总结. a. get 请求 1 url =

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

Python之mock接口开发

mock接口开发需要使用flask模块,安装flask模块 pip install flask import flask import json server=flask.Flask(__name__) #__name__是指把当前python文件当作一个服务 @server.route('/api/login',methods=['post','get']) #默认不传methods是get请求 def login(): username=flask.request.values.get('u