免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
python:接口開發(fā)

一、flask

flask是一個(gè)python編寫的輕量級(jí)框架,可以使用它實(shí)現(xiàn)一個(gè)網(wǎng)站或者web服務(wù)。本文就用flask來(lái)開發(fā)一個(gè)接口。

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

用flask開發(fā)接口的流程為:

1、定義一個(gè)server

server=flask.Flask(__name__) #__name__代表當(dāng)前的python文件。把當(dāng)前的python文件當(dāng)做一個(gè)服務(wù)啟動(dòng)

2、然后定義接口函數(shù),一般函數(shù)和接口函數(shù)的區(qū)別在于,定義為接口的函數(shù)上方要特別加上:

@server.route('/index',methods=['get','post']) #第一個(gè)參數(shù)就是路徑,第二個(gè)參數(shù)支持的請(qǐng)求方式,不寫的話默認(rèn)是get

 

@server.route('/index',methods=['get','post'])#第一個(gè)參數(shù)就是路徑,第二個(gè)參數(shù)支持的請(qǐng)求方式,不寫的話默認(rèn)是getdef index():    res={'msg':'這是我開發(fā)的第一個(gè)借口','msg_code':0}    return json.dumps(res,ensure_ascii=False)

3、讓server執(zhí)行起來(lái)

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

#port可自定義填寫。不要與機(jī)器上已占用的port沖突。
#debug=True,在代碼進(jìn)行修改后,程序會(huì)自動(dòng)重新加載,不用再次運(yùn)行。也就是運(yùn)行一次即可,即使改動(dòng)代碼,也不需要重啟服務(wù)
#host本地ip地址,寫0.0.0.0,可以讓其他人直接訪問本機(jī)的ip。
#最終這個(gè)接口的訪問地址就是 http://127.0.0.1/index ,get方法或者post方法都可。返回?cái)?shù)據(jù)是json格式res內(nèi)容

示例:

import flask,jsonserver=flask.Flask(__name__)#__name__代表當(dāng)前的python文件。把當(dāng)前的python文件當(dāng)做一個(gè)服務(wù)啟動(dòng)@server.route('/index',methods=['get','post'])#第一個(gè)參數(shù)就是路徑,第二個(gè)參數(shù)支持的請(qǐng)求方式,不寫的話默認(rèn)是getdef index():    res={'msg':'這是我開發(fā)的第一個(gè)借口','msg_code':0}    return json.dumps(res,ensure_ascii=False)server.run(port=7777,debug=True,host='0.0.0.0')

接口訪問中,經(jīng)常會(huì)需要輸入?yún)?shù)。那么如果要接受傳入的參數(shù),則可用以下方法:

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

示例:

import flask,jsonserver=flask.Flask(__name__)#__name__代表當(dāng)前的python文件。把當(dāng)前的python文件當(dāng)做一個(gè)服務(wù)啟動(dòng)@server.route('/reg',methods=['post'])#只有在函數(shù)前加上@server.route (),這個(gè)函數(shù)才是個(gè)接口,不是一般的函數(shù)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':'注冊(cè)成功','msg_code':0}    else:        res={'msg':'必填字段未填,請(qǐng)查看接口文檔','msg_code':1001} #1001表示必填接口未填    return json.dumps(res,ensure_ascii=False)server.run(port=7777,debug=True,host='0.0.0.0')#端口不寫默認(rèn)是5000.debug=True表示改了代碼后不用重啟,會(huì)自動(dòng)幫你重啟.host寫0.0.0.0,別人就可以通過ip訪問接口。否則就是127.0.0.1

 二、cookie操作處理

假設(shè)在做登錄接口的時(shí)候,要添加cookie到本地,則需要對(duì)接口返回的json串做一下操作:

res = flask.make_response(json_res) #json_res是接口返回?cái)?shù)據(jù)。然后對(duì)json_res在做操作,構(gòu)造成返回結(jié)果的對(duì)象
res.set_cookie(key,session_id,3600) #最后的數(shù)字是cookie的失效時(shí)間。這樣設(shè)置以后,在執(zhí)行登錄接口成功登錄,則會(huì)同時(shí)在本地加入cookie。其中key和session_id的值根據(jù)實(shí)際情況定義

例子:

@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)#返回結(jié)果弄成json        res = flask.make_response(json_res)  #構(gòu)造成返回結(jié)果的對(duì)象        res.set_cookie(key,session_id,3600) #最后的數(shù)字是cookie的失效時(shí)間。        return res

以上操作可成功保存cookie到本地。以后接口中需要使用coookie的時(shí)候,只需獲取:

cookies = flask.request.cookies  #所有的cokies,是個(gè)字典。然后可通過字典獲取到對(duì)應(yīng)的cookie,并執(zhí)行操作。

例:比如在做一些操作的時(shí)候,必須在登錄狀態(tài)下才可以,這時(shí)候就可以直接拿本地登錄時(shí)的cookie中內(nèi)容和服務(wù)器中的內(nèi)容進(jìn)行比對(duì),如果有一致的,說(shuō)明已成功登錄

@server.route('/posts')def posts():    cookies = flask.request.cookies  #所有的cokies    username = ''  #    session = ''#定義這兩個(gè)變量是為了,在沒有傳cookie的時(shí)候用的。    for key,value in cookies.items():        if key.startswith('txz_session'): #判斷cookie以txz_session開頭的話,取到它            username = key            session = value  #調(diào)用接口的時(shí)候用戶傳過的seesion,從cookie里面取過來(lái)的    redis_session = tools.op_redis(username) #從redis里面獲取到的的cookie    if redis_session == session:  #判斷傳過來(lái)的seeion和redis里面的session一樣        title = flask.request.values.get('title')#獲取文章標(biāo)題        conent = flask.request.values.get('content')#獲取文章內(nèi)容        article_key ='article:%s'%title     #key都以article開頭        tools.op_redis(article_key,conent) #把文章寫入redis        res = {'msg':'文章發(fā)表成功!','code':0}    else:        res = {'msg':'用戶未登錄!','code':2009}    return json.dumps(res,ensure_ascii=False)

 





本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
學(xué)習(xí)筆記八 接口開發(fā),上傳下載,日志
python筆記7:接口實(shí)現(xiàn)方法
Django相關(guān)知識(shí)點(diǎn)回顧
python后臺(tái)Flask 快速入門
第 82 天:Python Web 開發(fā)之 JWT 簡(jiǎn)介
登錄鑒權(quán)的三種方式:token、jwt、session簡(jiǎn)潔例子
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服