作為一名前端來學習后端語言,有難度啊.這里把第一次嘗試的過程做個記錄
1.網上看到Python給前端提供API可以使用python的flaskweb框架
#py文件
import json
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
result = {
'status': "200",
'data': 'Hello, world!',
}
return json.dumps(result)
if __name__ == '__main__':
app.run()
2.最早是在w3cschool上看的python語法,有講到CGI編程,自己感覺差不多.那好吧,啟動一個apache服務器apache配置
這里就是apache的各種安裝,配置,啟動
反正又是搞了一通
簡單幾點:
1.安裝的pache24,需要在apache>conf>httpd.conf 配置文件中設置Define SRVROOT "D:\Apache24"
2.設置監聽端口 ,默認80,改改吧Listen 8888
3.設置下訪問權限<Directory /> AllowOverride none Require all granted Header set Access-Control-Allow-Origin http://localhost:8888/ </Directory>
反正這里是搞的我一臉懵逼,至少這里這樣子對我來說是可以的
4.apache默認前端頁面放在根目錄下的htdocs文件夾中.DocumentRoot "${SRVROOT}/htdocs"
,執行文件放在根目錄下cgi-bin文件夾ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
5.<Directory "${SRVROOT}/cgi-bin"> AllowOverride All Options +ExecCGI -MultiViews +SymLinksifOwnerMatch Require all granted </Directory>
這里就不描述了,反正我到現在還是懵逼,后面再看看
6.添加.py為可執行的文件AddHandler cgi-script .cgi .py .php .pl
搞不懂的地方還是再百度吧,雖然東西雜點,但是還能找到比我這里描述的到位的
apache的啟動,可能需要使用管理員權限
啟動命令apache -k start
,結束命令apache -k stop
3.作為前端,我就too simple了.啟動了apache的服務器,我居然天真的以為就可以直接用ajax在頁面上請求py文件中的地址了.沒有運行執行文件
<body>
<fieldset id="field">
<legend>表單</legend>
<div>
直接點擊"請求"按鈕,請求當天的愛詞霸今日一句
</div>
<div id="requestWay">
<input type="radio" name="requestWay" value="GET" id="get"><label for="get">Get方式請求</label> <br />
<input type="radio" name="requestWay" value="POST" id="post"><label for="post">Post方式請求</label>
</div>
<p>
<button id="btn">請求</button>
</p>
</fieldset>
</body>
<script>
var type = "";
var baseUrl ="http://localhost:8888"
$("#btn").click(function(){
type = $('input:radio:checked').val() || "get";
$.ajax({
url: "http://192.168.1.198:5000/", // 在公司局域網只能用本機iP(后端flask設置host=0.0.0.0的情況下),使用127.0.0.1或者0.0.0.0或者localhost都報錯-找不到路徑
data:{},
type: type,
// dataType: "JSON",
success:function(res){
console.log(res)
},
error: function(xhr){
console.log(xhr)
}
})
})
</script>
結果這里各種找不到路徑.可憐小白如我.一直在想apache哪里配置錯了.好想哭....
后面問了下同事:你的可執行文件運行起來了吧.瞬間懵逼.接着來了一句:你執行文件沒有運行起來,它里面配置的那些路由怎么識別...
豁然開朗有沒有...
運行py文件吧..哭唧唧...
`python xx.py`,果然運行起來了.cmd提示我:` Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)`
*** 這里有個問題:直接打開cmd能夠在全局運行python -v
命令,但是卻不能找到pip
,而使用管理員運行的cmd能夠全局運行pip install xx
卻不能執行python -v
....黑人疑問***
4.把運行py文件的地址http://127.0.0.1:5000/
作為前端請求地址,發起請求.找不到路徑;
仍然找不到這個路徑...
路徑改成http://localhost:5000/,找不到...
路徑改成'http://0.0.0.0:5000/',也不對...
**最后把,py文件中的 `app.run()`加上幾個參數-->`app.run(host='0.0.0.0', port=5000, debug = True)`,前端請求地址改成當前局域網的ip地址`192.168.1.x',好了..**.
5.在最開始使用apache地址出錯的時候,出現過跨域的問題.
在py文件中
from flask_cors import CORS # 跨域
app = Flask(__name__)
CORS(app, resources=r'/*') # 請求跨域的問題
#設置響應頭
@app.after_request
def apply_caching(response):
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'OPTIONS,HEAD,GET,POST'
response.headers['Access-Control-Allow-Headers'] = "*" #'x-requested-with'
return response
雖然最終原因是因為最開始設置的apahce的端口忘了改了...這個解決跨域的方法可以做下記錄.