這篇文章主要介紹python接口如何寫(xiě),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元保靖做網(wǎng)站,已為上家服務(wù),為保靖各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
一、flask
flask是一個(gè)python編寫(xiě)的輕量級(jí)框架,可以使用它實(shí)現(xiàn)一個(gè)網(wǎng)站或者web服務(wù)。本文就用flask來(lái)開(kāi)發(fā)一個(gè)接口。
flask需要先安裝再引用。pip install flask
用flask開(kāi)發(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)求方式,不寫(xiě)的話默認(rèn)是get @server.route('/index',methods=['get','post'])#第一個(gè)參數(shù)就是路徑,第二個(gè)參數(shù)支持的請(qǐng)求方式,不寫(xiě)的話默認(rèn)是get def index(): res={'msg':'這是我開(kāi)發(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可自定義填寫(xiě)。不要與機(jī)器上已占用的port沖突。 #debug=True,在代碼進(jìn)行修改后,程序會(huì)自動(dòng)重新加載,不用再次運(yùn)行。也就是運(yùn)行一次即可,即使改動(dòng)代碼,也不需要重啟服務(wù) #host本地ip地址,寫(xiě)0.0.0.0,可以讓其他人直接訪問(wèn)本機(jī)的ip。 #最終這個(gè)接口的訪問(wèn)地址就是 http://127.0.0.1/index ,get方法或者post方法都可。返回?cái)?shù)據(jù)是json格式res內(nèi)容
示例:
import flask,json server=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)求方式,不寫(xiě)的話默認(rèn)是get def index(): res={'msg':'這是我開(kāi)發(fā)的第一個(gè)借口','msg_code':0} return json.dumps(res,ensure_ascii=False) server.run(port=7777,debug=True,host='0.0.0.0')
接口訪問(wèn)中,經(jīng)常會(huì)需要輸入?yún)?shù)。那么如果要接受傳入的參數(shù),則可用以下方法:
username=flask.request.values.get('username')
示例:
import flask,json server=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') #端口不寫(xiě)默認(rèn)是5000.debug=True表示改了代碼后不用重啟,會(huì)自動(dòng)幫你重啟.host寫(xiě)0.0.0.0,別人就可以通過(guò)ip訪問(wèn)接口。否則就是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í)候,只需獲?。?/p>
cookies = flask.request.cookies #所有的cokies,是個(gè)字典。然后可通過(guò)字典獲取到對(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è)變量是為了,在沒(méi)有傳cookie的時(shí)候用的。 for key,value in cookies.items(): if key.startswith('txz_session'): #判斷cookie以txz_session開(kāi)頭的話,取到它 username = key session = value #調(diào)用接口的時(shí)候用戶傳過(guò)的seesion,從cookie里面取過(guò)來(lái)的 redis_session = tools.op_redis(username) #從redis里面獲取到的的cookie if redis_session == session: #判斷傳過(guò)來(lái)的seeion和redis里面的session一樣 title = f
以上是python接口如何寫(xiě)的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前名稱:python接口如何寫(xiě)
文章分享:http://jinyejixie.com/article14/ggsoge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、做網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)