python為前端提供API


作為一名前端來學習后端語言,有難度啊.這里把第一次嘗試的過程做個記錄

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的端口忘了改了...這個解決跨域的方法可以做下記錄.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM