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的端口忘了改了...这个解决跨域的方法可以做下记录.
python为前端提供API的更多相关文章
- 通过express框架为前端提供api(数据),妈妈再也不用担心后端不给我数据了~
		
个人网站 https://iiter.cn 程序员导航站 开业啦,欢迎各位观众姥爷赏脸参观,如有意见或建议希望能够不吝赐教! 首先,确保自己安装了express框架. 没有安装的同学可以参照下面这篇博 ...
 - 让所有网站都提供API的Python库:Toapi
		
这是一个让所有网站都提供API的Python库.以前,我们爬取数据,然后把数据存起来,再创造一个api服务以便其他人可以访问.为此,我们还要定期更新我们的数据.这个库让这一切变得容易起来.你要做的就是 ...
 - 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)
		
https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...
 - Python web前端 09 jQuery
		
Python web前端 09 jQuery 一.三个重要网址 http://jquery.cuishifeng.cn/ #中文查询网站 http://www.bootcdn.cn/ #引入jq ht ...
 - Core Web API上使用Swagger提供API文档
		
在ASP.NET Core Web API上使用Swagger提供API文档 我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的AP ...
 - 视频编辑SDK---我们只提供API,任你自由设计炫酷的功能
		
面对相对复杂的视频编辑处理技术,你是否束手无策? 在短视频应用中,有一定技术难度的视频编辑技术中,我们提出了一种全新的解决方法:画板和画笔.短视频处理,用画板和画笔,就够了! 我们设计了极其简单易懂的 ...
 - python调用openstack的api,create_instance的程序解析
		
python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848 版权声明:本文为博主原创文章,未经 ...
 - Python+Flask搭建mock api server
		
Python+Flask搭建mock api server 前言: 近期由于工作需要,需要一个Mock Server调用接口直接返回API结果: 假如可以先通过接口文档的定义,自己模拟出服务器返回结果 ...
 - Python获得百度统计API的数据并发送邮件
		
Python获得百度统计API的数据并发送邮件 小工具 本来这么晚是不准备写博客的,当是想到了那个狗子绝对会在开学的时候跟我逼逼这个事情,所以,还是老老实实地写一下吧. Baidu统计API的使 ...
 
随机推荐
- Bootstrap3中的affix的使用Demo
			
<div class="container"> <div class="col-md-3"> <ul class="li ...
 - Centos下的MySQL安装及配置
			
里使用的是VMware虚拟机和Centos7系统 虚拟机安装这里不多讲,网上教程很多了,这里就介绍下虚拟机的网络配置. 虚拟机网络配置 Centos网络连接模式这里设置为桥接模式,不用勾选复制物理网络 ...
 - C# XML解析之DOM模型
			
DOM的工作方式是:首先将XML文档一次性的装入内存,然后根据文档中定义的元素和属性在内存中创建一个“树型结构”也就是一个文档对象模型,这里的含义其实是把文档对象化,文档中每个节点对应着模型中一个对象 ...
 - API的描述语言--Swagger
			
Swagger是一种Rest API的表示方式. 有时也可以作为Rest API的交互式文档,描述形式化的接口描述,生成客户端和服务端的代码. 一,描述语言:Spec Swagger API Spec ...
 - head first 设计模式第一章笔记
			
设计模式是告诉我们如何组织类和对象以解决某种问题. 学习设计模式,也就是学习其他开发人员的经验与智慧,解决遇到的相同的问题. 使用模式的最好方式是:把模式装进脑子,然后在设计的时候,寻找何处可以使用它 ...
 - GeoServer 修改端口
			
准备内容 安装环境:win10*64位专业版 安装文件:geoserver-2.15.2 操作步骤 1.找到文件夹下的start.ini,并用记事本打开 2.找到jetty.port,修改为自己需要的 ...
 - <编译原理 - 函数绘图语言解释器(2)语法分析器 - python>
			
<编译原理 - 函数绘图语言解释器(2)语法分析器 - python> 背景 编译原理上机实现一个对函数绘图语言的解释器 - 用除C外的不同种语言实现 设计思路: 设计函数绘图语言的文法, ...
 - linux basic
			
一:date 语法: 打印日期:date [OPTION]..... [+FORMAT] 设定日期:date [MMDDhhmm] [[cc][YY][.ss] 创建带实时日期的文件 touch $ ...
 - Linux的curl和wget
			
wget wget命令用来从指定的URL下载文件.wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕.如果是服 ...
 - 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(1)- Boot简介
			
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的BootROM功能简介. 截止目前为止i.MX RTxxx系列已公布的芯片仅有一款i.MXRT60 ...
 
			
		