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

原文地址:https://www.cnblogs.com/whitewen/p/11381650.html

时间: 2024-11-05 16:04:45

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

前端提供一个接口或者调用后台接口,这个接口具体指什么

ajax 我给你一个例子 (function () { var timing = null; console.log($(".name").length) timing=setInterval(function () { $.ajax( { type: "post", url: "http://t1.loocha.cn:9880/link/anchor/finalcompetitor?activityId=40987", data: {}, da

python和前端之HTML的激情

python写前端需要啥语言? a:HTML → 骨架[类似于创建一个塑料模特],搭建.调整整个页面布局 b:CSS    → 衣服[类似于给塑料模特穿上衣服,不能那么暴露],将整个页面美化 c:JS    → 马达[给模特装一个小马达,这样才能动,才能叫嘛],让页面动起来 1.初识HTML. 基本概念: html为超文本标记语言,它不是一种编程语言,是一种描述性的标记语言,用于描述超文本内容的显示方式.比如字体.颜色.大小等. 超文本:音频,视频,图片称为超文本. 标记 :<英文单词或者字母>

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

在ASP.NET Core Web API上使用Swagger提供API文档 我在开发自己的博客系统(http://daxnet.me)时,给自己的RESTful服务增加了基于Swagger的API文档功能.当设置IISExpress的默认启动路由到Swagger的API文档页面后,在IISExpress启动Web API站点后,会自动重定向到API文档页面,非常方便.这不仅让我能够快速省查API设计的合理性,同时从API的使用角度也为我自己提供了便捷.下图就是我的博客系统RESTful API

在独立的python文件调用django api

在独立的python文件调用django api加入下面代码: 1 import os 2 import sys 3 root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 4 if root not in sys.path: sys.path.append(root) 5 if os.environ.get('DJANGO_SETTINGS_MODULE') == None: os.environ.setdefaul

python利用企业微信api来进行发送自定义报警的类实现

python利用企业微信api来进行发送自定义报警的类实现 企业微信注册 打开http://work.weixin.qq.com/企业微信主页: 点击企业注册: 填写相关信息,营业执照和注册号可以不用填,直接下一步,按照提示操作即可: 注册完成后,登陆,就显示如下界面: 点击我的企业标签: 看到如上界面,复制CorpID对应的值: 点击企业应用: 点击 创建应用: 填写对应内容,点击创建应用即可: 然后再点击企业应用,就可以在自建应用里看到自己创建的应用: 点击应用图标,看到如下图 复制Agen

Python 访问 LinkedIn (API)

CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-16 @author: guaguastd @name: login.py ''' # twitter login def linkedin_login(): from linkedin import linkedin CONSUMER_KEY = '' CONSUMER_SECRET = '' USER_TOKEN = '' USER_SECRET = '

微信小程序 -- 前端技术API手册

小时候随手拿着英语小本子,在厕所或者路上随时翻看的场景大家还记得吗? 现在它有回来了,本次工程主要收录前端各项技术API,整合在微信小程序中,在首页选择要学习的技术就可以进到相关页面. 小程序长这样:               目前的进展是 jQuery API 收录到一半,预计下周 小程序 会先上线,其他内容后续进行补充. 大家有兴趣或者想贡献自己力量的可以联系我,在公众号底部菜单中有联系方式. 如果有想学习微信小程序开发的也可以联系我. 广播: 关注微信公众号 "jQuery每日经典&qu

[实用] 为app提供api,架构该怎么设计,需要考虑高并发,访问量比较大

为app提供api,架构该怎么设计,需要考虑高并发,访问量比较大 引用:http://zhidao.baidu.com/link?url=D_TRx6MlKqEz9Lxw7Yd58Nb53MGiKtfsKdvwRHseod4lFKd6iy0WXVrDX6VLe2rubklVpS9EjjE5BZ3U5UjkcBJvhfUWS5p0bQvLPWeBxHW 2015-04-13 21:58 提问者采纳 1.关于rest,仅仅是一种风格,至于框架,spring mvc 是比较成熟的,其实这块mvc 框架

python轻量级ORM---peewee之API

1.classmethods such as select/update/insert/delete queries. # Example: class User(Model): username = CharField() join_date = DateTimeField() is_admin = BooleanField() u = User(username='charlie', is_admin=True) <span style="background-color: rgb(2