溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python開發(fā)web服務(wù)的方法是什么

發(fā)布時(shí)間:2022-01-12 17:55:59 來(lái)源:億速云 閱讀:158 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“python開發(fā)web服務(wù)的方法是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

開發(fā)功能不是特別復(fù)雜的web服務(wù),可以考慮使用bottle框架。原因:一、Python開發(fā)效率高呀!不信你比比同樣的功能Python幾行可以搞定?換java試試?換C++試試?作為這幾種語(yǔ)言都使用過(guò)的我來(lái)說(shuō),用過(guò)java就盡量不用C++,用過(guò)Python就盡量不用java,真的不堪回首。

使用bottle框架首先安裝。一個(gè)指令搞定。

# pip install bottle

分享一個(gè)遇到的pip的問(wèn)題,我Python版本很低2.6.6。本來(lái)通過(guò)安裝yum的epel,已經(jīng)成功安裝了好用的pip。但是每次我用pip命令,最下方都會(huì)提示升級(jí)

You are using pip version 9.0.3, however version 20.0.2 is available.You should consider upgrading via the 'pip install --upgrade pip' command

我看這個(gè)提示也沒(méi)什么惡意,就執(zhí)行了pip install --upgrade pip。然后pip指令就不能用了,就和升級(jí)glibc錯(cuò)誤之后,ls cd這種shell指令都無(wú)法執(zhí)行是一個(gè)效果。而且升級(jí)了之后,在想安裝回低版本的pip就沒(méi)有對(duì)應(yīng)的安裝包了。yum只能找到20.0.2版本的(老版本會(huì)被覆蓋難道?)。

http://bootstrap.pypa.io/2.6/get-pip.py

下載了get-pip.py也無(wú)法安裝成功。最后在上面的地址下載到了2.6版本的安裝文件,才成功安裝可以使用的pip。(看見地址里的2.6了嗎?)

pip install bottle成功之后,進(jìn)入Python命令行import bottle,沒(méi)報(bào)錯(cuò)就是成功了。我的web服務(wù)就一個(gè)文件bottleweb.py,代碼如下

#coding=utf-8from bottle import (run, route, get, post, put, delete, request, hook, response, static_file, app)import jsonimport MySQLdb #本例子需要操作數(shù)據(jù)庫(kù),否則可以不寫這行,這個(gè)數(shù)據(jù)庫(kù)包pip估計(jì)安裝不會(huì)成功,我是用yum install MySQL-python成功的import sysreload(sys)sys.setdefaultencoding('utf8')
import bottleapp = bottle.default_app()#處理靜態(tài)資源需要定義,沒(méi)有靜態(tài)資源可以不寫這行#搭建vue腳手架前后臺(tái)聯(lián)調(diào)時(shí)要下面兩個(gè)@hook內(nèi)容,否則會(huì)報(bào)跨域訪問(wèn)資源的錯(cuò)誤@hook('before_request')def validate():    REQUEST_METHOD = request.environ.get('REQUEST_METHOD')
   HTTP_ACCESS_CONTROL_REQUEST_METHOD = request.environ.get('HTTP_ACCESS_CONTROL_REQUEST_METHOD')    if REQUEST_METHOD == 'OPTIONS' and HTTP_ACCESS_CONTROL_REQUEST_METHOD:        request.environ['REQUEST_METHOD'] = HTTP_ACCESS_CONTROL_REQUEST_METHOD

@hook('after_request')def enable_cors():    response.headers['Access-Control-Allow-Origin'] = '*'    response.headers['Access-Control-Allow-Methods'] = 'GET,POST,PUT,DELETE,OPTIONS'    response.headers['Access-Control-Allow-Headers'] = '*'
@route('/test2020/dist/<path>')#靜態(tài)資源在web服務(wù)下的地址,沒(méi)放前端的靜態(tài)資源這幾個(gè)route和app.route可以不寫def stat(path):    return static_file(path, root='./dist/')
@app.route('/test2020/dist/static/js/<path>')  def js(path):  #這幾個(gè)目錄我寫成這樣是因?yàn)関ue打包完后目錄結(jié)構(gòu)就是dist 里面static等等    return static_file(path, root='./dist/static/js/')
@app.route('/test2020/dist/static/css/<path>')  def css(path):      return static_file(path, root='./dist/static/css/')    @get('/test2020/date')#返回某個(gè)表中的日期,看sql你就明白了def helloins():    db = MySQLdb.connect("127.0.0.1", "yourusername", "yourpassword", "yourDBname", charset='utf8' )    cursor = db.cursor()    sql = "select DISTINCT date from testtable"    print sql    cursor.execute(sql)    data = cursor.fetchall()    jsondata={}    results=[]    for row in data:        result = {}        result['DATE'] = row[0]        results.append(result)    jsondata['code']=0    jsondata['datas']=results    return jsondata  #返回json格式為了方便前端vue接收處理,其實(shí)返回各種類型都可以    @get('/test2020/helloworld')def helloworld():    return 'hello world!'    if __name__ == '__main__':    run(host='0.0.0.0', port=2020, debug=True, reloader=True)

bottleweb.py所在目錄執(zhí)行#python bottleweb.py,web服務(wù)就啟動(dòng)了簡(jiǎn)單吧?瀏覽器訪問(wèn)http://127.0.0.1:2020/test2020/helloworld試試

如果你安裝了MySQL數(shù)據(jù)庫(kù)可以測(cè)試test2020/date的url是否能返回結(jié)果

數(shù)據(jù)庫(kù)只有有下面的數(shù)據(jù)就可以

python開發(fā)web服務(wù)的方法是什么

前端頁(yè)面是這個(gè)樣子的,給用戶選擇某個(gè)日期,用于手機(jī)端。

python開發(fā)web服務(wù)的方法是什么

前端是用vue+vux來(lái)開發(fā)的,開發(fā)完打包的成果就是上文提到的dist目錄下的東西。本文不詳細(xì)討論了。后續(xù)我會(huì)講一講MySQL和vue開發(fā)的一些坑。如果覺(jué)得上面的代碼有點(diǎn)復(fù)雜,可以把所有route, app.route的東西刪除,把/test2020/date語(yǔ)句塊也刪除,把@hook刪除,MySQL的東西刪除,前端的東西也完全不考慮,就是最簡(jiǎn)單的bottle web服務(wù)了。這樣有助于一步一步學(xué)習(xí)。如果幫到你得話請(qǐng)幫點(diǎn)個(gè)在看。

“python開發(fā)web服務(wù)的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI