您好,登錄后才能下訂單哦!
本篇內容介紹了“python開發web服務的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
開發功能不是特別復雜的web服務,可以考慮使用bottle框架。原因:一、Python開發效率高呀!不信你比比同樣的功能Python幾行可以搞定?換java試試?換C++試試?作為這幾種語言都使用過的我來說,用過java就盡量不用C++,用過Python就盡量不用java,真的不堪回首。
使用bottle框架首先安裝。一個指令搞定。
# pip install bottle
分享一個遇到的pip的問題,我Python版本很低2.6.6。本來通過安裝yum的epel,已經成功安裝了好用的pip。但是每次我用pip命令,最下方都會提示升級
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
我看這個提示也沒什么惡意,就執行了pip install --upgrade pip。然后pip指令就不能用了,就和升級glibc錯誤之后,ls cd這種shell指令都無法執行是一個效果。而且升級了之后,在想安裝回低版本的pip就沒有對應的安裝包了。yum只能找到20.0.2版本的(老版本會被覆蓋難道?)。
http://bootstrap.pypa.io/2.6/get-pip.py
下載了get-pip.py也無法安裝成功。最后在上面的地址下載到了2.6版本的安裝文件,才成功安裝可以使用的pip。(看見地址里的2.6了嗎?)
pip install bottle成功之后,進入Python命令行import bottle,沒報錯就是成功了。我的web服務就一個文件bottleweb.py,代碼如下
#coding=utf-8
from bottle import (run, route, get, post, put, delete, request, hook, response, static_file, app)
import json
import MySQLdb #本例子需要操作數據庫,否則可以不寫這行,這個數據庫包pip估計安裝不會成功,我是用yum install MySQL-python成功的
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import bottle
app = bottle.default_app()#處理靜態資源需要定義,沒有靜態資源可以不寫這行
#搭建vue腳手架前后臺聯調時要下面兩個@hook內容,否則會報跨域訪問資源的錯誤
@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>')#靜態資源在web服務下的地址,沒放前端的靜態資源這幾個route和app.route可以不寫
def stat(path):
return static_file(path, root='./dist/')
@app.route('/test2020/dist/static/js/<path>')
def js(path): #這幾個目錄我寫成這樣是因為vue打包完后目錄結構就是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')#返回某個表中的日期,看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接收處理,其實返回各種類型都可以
@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所在目錄執行#python bottleweb.py,web服務就啟動了簡單吧?瀏覽器訪問http://127.0.0.1:2020/test2020/helloworld試試
如果你安裝了MySQL數據庫可以測試test2020/date的url是否能返回結果
數據庫只有有下面的數據就可以
前端頁面是這個樣子的,給用戶選擇某個日期,用于手機端。
前端是用vue+vux來開發的,開發完打包的成果就是上文提到的dist目錄下的東西。本文不詳細討論了。后續我會講一講MySQL和vue開發的一些坑。如果覺得上面的代碼有點復雜,可以把所有route, app.route的東西刪除,把/test2020/date語句塊也刪除,把@hook刪除,MySQL的東西刪除,前端的東西也完全不考慮,就是最簡單的bottle web服務了。這樣有助于一步一步學習。如果幫到你得話請幫點個在看。
“python開發web服務的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。