這篇文章主要介紹python接口如何寫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一、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)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的時候,只需獲?。?/p>
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 = f以上是python接口如何寫的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。