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

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. nyoj 739 笨蛋难题四

    笨蛋难题四 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价, ...

  2. 领扣(LeetCode)字母大小写全排列 个人题解

    给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" 输出: ["a1 ...

  3. 使用不同的C++支持库的模块混合开发时,引发异常展开不正常,抛异常竟引出一个SIGSEGV

    如果你使用gcc对一部分模块进行了GNUMake的编译,这些编译出动态库使用在Gradle编译框架下的项目.那么就有可能出现题目中的情况,使用不同的C++支持库的模块混合开发时,引发异常展开不正常. ...

  4. react路由的动态传参

    ① 定义规则 ②传值 ③获取传过来的值

  5. Winform-最大化窗口

    设置winform窗体最大化,填满整个屏幕 this.WindowState = FormWindowState.Maximized;

  6. 【2018寒假集训 Day2】【动态规划】回文字

    回文字(palin) 问题描述: 如果一个单词从前和从后读都是一样的,则称为回文字.如果一个单词不是回文字,则可以把它拆分成若干个回文字.编程求一个给定的字母序列,最多要分割成几部分,使每一部分都回文 ...

  7. applicationContext-dao.xml 配置错误

    https://www.captainbed.net/ 配置文件报错: 不允许有匹配 "[xX][mM][lL]" 的处理指令目标. 错误原因: 由于大部分都是搬砖,所以格式没注意 ...

  8. day 07 复习总结

    今日主要内容 1. 补充基础数据类型的相关知识点 1. str. join() 把列表变成字符串 对应的是split () 表示把字符串变成列表.  ()里面为分隔符,不写默认为空格分隔 1.吧 2. ...

  9. 这事没完,继续聊spring cloud stream和kafka的这些小事

    上一篇文章讲了如何用spring cloud stream集成kafka,并且跑起来一个demo,如果这一次宣传spring cloud stream的文章,其实到这里就可以啦.但实际上,工程永远不是 ...

  10. Vsftp与PAM虚拟用户

    使用yum 安装vsftp yum install vsftpd pam pam-* db4 db4-* 创建一个保存用户及密码的文件 cd /etc/vsftpd/ touch virtual_lo ...