作为一名前端来学习后端语言,有难度啊.这里把第一次尝试的过程做个记录

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的端口忘了改了...这个解决跨域的方法可以做下记录.

python为前端提供API的更多相关文章

  1. 通过express框架为前端提供api(数据),妈妈再也不用担心后端不给我数据了~

    个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 首先,确保自己安装了express框架. 没有安装的同学可以参照下面这篇博 ...

  2. 让所有网站都提供API的Python库:Toapi

    这是一个让所有网站都提供API的Python库.以前,我们爬取数据,然后把数据存起来,再创造一个api服务以便其他人可以访问.为此,我们还要定期更新我们的数据.这个库让这一切变得容易起来.你要做的就是 ...

  3. 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)

    https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...

  4. Python web前端 09 jQuery

    Python web前端 09 jQuery 一.三个重要网址 http://jquery.cuishifeng.cn/ #中文查询网站 http://www.bootcdn.cn/ #引入jq ht ...

  5. Core Web API上使用Swagger提供API文档

    在ASP.NET Core Web API上使用Swagger提供API文档   我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的AP ...

  6. 视频编辑SDK---我们只提供API,任你自由设计炫酷的功能

    面对相对复杂的视频编辑处理技术,你是否束手无策? 在短视频应用中,有一定技术难度的视频编辑技术中,我们提出了一种全新的解决方法:画板和画笔.短视频处理,用画板和画笔,就够了! 我们设计了极其简单易懂的 ...

  7. python调用openstack的api,create_instance的程序解析

    python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848   版权声明:本文为博主原创文章,未经 ...

  8. Python+Flask搭建mock api server

    Python+Flask搭建mock api server 前言: 近期由于工作需要,需要一个Mock Server调用接口直接返回API结果: 假如可以先通过接口文档的定义,自己模拟出服务器返回结果 ...

  9. Python获得百度统计API的数据并发送邮件

    Python获得百度统计API的数据并发送邮件 小工具  本来这么晚是不准备写博客的,当是想到了那个狗子绝对会在开学的时候跟我逼逼这个事情,所以,还是老老实实地写一下吧.   Baidu统计API的使 ...

随机推荐

  1. ESP8266 使用AT指令

    ESP8266 使用AT指令 问题:串口调试工具输入AT指令没返回结果 分析板子有两种模式 下载模式(默认) 运行模式 解决办法: 方法一:按下板子上的 RST 键位 方法二:使用 [安信可串口调试工 ...

  2. nyoj 83-迷宫寻宝(二) (计算几何, 叉积)

    83-迷宫寻宝(二) 内存限制:10MB 时间限制:1000ms 特判: No 通过数:2 提交数:6 难度:5 题目描述: 一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个 ...

  3. Cognitive Graph for Multi-Hop Reading Comprehension at Scale(ACL2019) 阅读笔记与源码解析

    论文地址为:Cognitive Graph for Multi-Hop Reading Comprehension at Scale github地址:CogQA 背景 假设你手边有一个维基百科的搜索 ...

  4. opencv 4 图像处理(2 形态学滤波:腐蚀与膨胀,开运算、闭运算、形态学梯度、顶帽、黑帽)

    腐蚀与膨胀 膨胀(求局部最大值)(dilate函数) #include <opencv2/core/core.hpp> #include <opencv2/highgui/highg ...

  5. Future模式的学习以及JDK内置Future模式的源码分析

    并发程序设计之Future模式 一).使用Future模式的原因 当某一段程序提交了一个请求,期待得到一个答复,但服务程序对这个请求的处理可能很慢,在单线程的环境中,调用函数是同步的,必须等到服务程序 ...

  6. IDEA导入MySQL的jdbc驱动,并操作数据库

    将MySQL的jdbc驱动,导入IDEA的方式,虽然也能连接并且操作数据库,但并不推荐这种方式,推荐使用Maven工程的方式:https://www.cnblogs.com/dadian/p/1193 ...

  7. day 28 网络基础相关的知识

    1.网络基础相关的知识 架构 C/S 架构:  client 客户端  server服务器端 优势: 能充分发挥PC机的性能 B/S 架构: browser 浏览器 server服务器       隶 ...

  8. DNS资源记录的七类

    在Microsoft产品系列中,ADDS是一个很出色的设计平台,说到AD,那么我们就不得不提起他的合作伙伴--DNS,相信大家都知道,DNS在AD中的重要地位,就如男人和女人一样,要想有所作为,他们2 ...

  9. 都9012了,Java8中的日期时间API你还没有掌握?

    一,Java8日期时间API产生的前因后果 1.1 为什么要重新定义一套日期时间API 操作不方便:java中最初的Date不能直接对指定字段进行加减操作也不支持国际化,后来新增了Calendar,但 ...

  10. 前端vue如何下载或者导出word文件和excel文件

    前端用vue怎么接收并导出文件 window.location.href = "excel地址" 如果是 get 请求,那直接换成 window.open(url) 就行了 创建一 ...