python 前后端分离 简单的数据库返回接口
1.使用node http-server 起本地服务器 或者打开nginx 直接用nginx的默认页面也可以 (用下面的html文件替换nginx下html文件夹下的index.html)
http-server -p 8888
然后在浏览器打开 localhost:8888 打开页面
jQuery ajax 请求数据
<!DOCTYPE html>
<html>
<head>
<title>node</title>
</head>
<body>
<p id="text">jquery 请求数据</p>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script>
function get(){
$.ajax({
type:'get',
//url: 'localhost: 8081/docs/',//由于 服务启动的8888端口请求 8081端口 跨域,用nginx配置跨域
url: '/docs/',
success:function(data){
$('#text').html(data.data)
},
error:function(err){
console.log(err);
}
})
} </script>
<input type="hidden" id="dat3" value="3">
<button onClick="get()">请求数据</button>
</body>
</html>
2.由于 服务启动的8888/80端口请求 8081端口 跨域,用nginx配置跨域 nginx下载
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log logs/host.access.log;
location / {
root html;
index index.html index.htm;
}
location ^~ /docs/ {
proxy_pass http://localhost:8081;
}
3.python接口文件 新建api.py 在bash下打开 python api.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pymysql #导入 pymysql
import urllib2 import json
from urlparse import parse_qs
from wsgiref.simple_server import make_server #打开数据库连接
def get_data():
db= pymysql.connect(host="localhost",user="root",
password="",db="user",port=3306) # 使用cursor()方法获取操作游标
cur = db.cursor() #1.查询操作
# 编写sql 查询语句 user 对应我的表名
sql = "select * from users"
# results =
try:
cur.execute(sql) #执行sql语句 results = cur.fetchall() #获取查询的所有记录
# print("id","name","password")
#遍历结果
for row in results :
id = row[0]
name = row[1]
password = row[2]
# print(id,name,password)
return results
except Exception as e:
raise e
finally:
db.close() #关闭连接 # 定义函数,参数是函数的两个参数,都是python本身定义的,默认就行了。 def application(environ, start_response):
# 定义文件请求的类型和当前请求成功的code
start_response('200 OK', [('Content-Type', 'text/html')])
# environ是当前请求的所有数据,包括Header和URL,body,这里只涉及到get
# 获取当前get请求的所有数据,返回是string类型
params = parse_qs(environ['QUERY_STRING'])
# 获取get中key为name的值
name = params.get('name', [''])[0]
no = params.get('no', [''])[0] # 组成一个数组,数组中只有一个字典
# dic = {'name': 'name', 'no': 'no'}
#dic = get_data() dic = {'data':[ { 'a' : ['',''], 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]} # dic = get();
return [json.dumps(dic)] if __name__ == "__main__":
url = '127.0.0.1' # 监听的请求url
port = 8081 #监听的端口 只要是8081端口的都会返回数据,下面请求的url加了/docs/ 是nginx 匹配的需要
# httpd = make_server("0.0.0.0", port, application)
httpd = make_server(url, port, application)
print "serving http on port {0}...".format(str(port))
httpd.serve_forever()
配置ok 点击打开页面请求下 是不是 是不是请求到数据了
数据自定义 不用再求后端修改接口了。
有问题 欢迎来指点。
python 前后端分离 简单的数据库返回接口的更多相关文章
- 前后端分离,如何防止api接口被恶意调用或攻击
无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了.目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提 ...
- SpringBoot+Shiro+JWT前后端分离实现用户权限和接口权限控制
1. 引入需要的依赖 我使用的是原生jwt的依赖包,在maven仓库中有好多衍生的jwt依赖包,可自己在maven仓库中选择,实现大同小异. <dependency> <groupI ...
- thinkphp 前后端分离
thinkphp 前后端分离 简单记录一下之前学习tp的历程吧. 前端HTML页面渲染 <?php namespace app\index\controller; use think\Contr ...
- 巨蟒python全栈开发flask8 MongoDB回顾 前后端分离之H5&pycharm&夜神
1.MongoDB回顾 .启动 mongod - 改变data/db位置: --dbpath D:\data\db mongod --install 安装windows系统服务 mongod --re ...
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存
代码已上传Github+Gitee,文末有地址 上回<从壹开始前后端分离[ .NET Core2.0 Api + Vue 2.0 + AOP + 分布式]框架之九 || 依赖注入IoC学习 + ...
- 采用异步来实现重新连接服务器或者重新启动服务 C#中类的属性的获取 SignalR2简易数据看板演示 C#动态调用泛型类、泛型方法 asp .net core Get raw request. 从壹开始前后端分离[.NetCore 不定期更新] 38 ║自动初始化数据库
采用异步来实现重新连接服务器或者重新启动服务 开启异步监听,不会导致主线程的堵塞,在服务异常断开后一直检测重新连接服务,成功连接服务后通知各个注册的客户端! #region 检测断线并重连OPC服务 ...
- SpringBootSecurity学习(12)前后端分离版之简单登录
前后端分离 前面讨论了springboot下security很多常用的功能,其它的功能建议参考官方文档学习.网页版登录的形式现在已经不是最流行的了,最流行的是前后端分离的登录方式,前端单独成为一个项目 ...
- Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存
本文梯子 本文3.0版本文章 代码已上传Github+Gitee,文末有地址 大神反馈: 零.今天完成的深红色部分 一.AOP 之 实现日志记录(服务层) 1.定义服务接口与实现类 2.在API层中添 ...
- spring security简单教程以及实现完全前后端分离
spring security是spring家族的一个安全框架,入门简单.对比shiro,它自带登录页面,自动完成登录操作.权限过滤时支持http方法过滤. 在新手入门使用时,只需要简单的配置,即可实 ...
随机推荐
- erlang 笔记(06/03/02)
1 .同时打开的端口数量限制(Open ports) erlang:system_info(port_limit)查询 可以通过环境变量ERL_MAX_PORTS修改,或者配置erlang启动参数(标 ...
- git命令及远程仓库操作内容整理
0.在git官网上下载git对应的适配系统版本 进入到需要管理的目录,打开git终端 1.git相关的基础命令: git init 在当前文件夹下创建一个.git的隐藏文件夹,初始化版本控制器 注:不 ...
- systemctl用法及其语法
1.确定是否安装systemd及其版本 # systemctl –version 2.确定systemd和systemctl的二进制文件和库文件的安装位置 # whereis systemd # wh ...
- vue组件利用formdata图片预览以及上传
转载修改 在项目中直接新建一个单文件页,复制一下代码即可 upload组件: <template> <div class="vue-uploader" ...
- 数组去重复的时候遇到length变成1 的bug
arrUnique:function(arr){ //传入空数组的时候有bug,length会变成1 所以修复下 if(arr.length == 0){ return []; } arr.sort( ...
- python之路-----网络编程
一:客户端/服务端j架构(C/S架构) 在生活中,最常见的C/S架构即是APP和网页服务器这个架构.Client和Server之间利用网络来进行通信,客户端和服务器端的程序不同,用户的程序主要在客户端 ...
- 笨办法30Else 和 If
people = 30 cars = 40 trucks = 30 if cars < people: print "We should take the cars." el ...
- open live writer安装教程和账号配置
第一步:Open Live Writer软件下载.官方地址:http://openlivewriter.org/ 第二步:双击安装文件(OpenLiveWriterSetup.exe),然后点击下一步 ...
- 框架tensorflow1
TensorFlow 1 分类: 1,protocol Buffer 处理结构化数据工具: (xml,json) 2,Bazel 自动化构建工具, 编译: tensor 张量: ...
- Python全栈之路----函数
基本介绍 定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 编程中的函数在英文中有很多不同的叫法:在BASIC中叫做subroutine(子过程或 ...