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 前后端分离 简单的数据库返回接口的更多相关文章

  1. 前后端分离,如何防止api接口被恶意调用或攻击

    无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了.目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提 ...

  2. SpringBoot+Shiro+JWT前后端分离实现用户权限和接口权限控制

    1. 引入需要的依赖 我使用的是原生jwt的依赖包,在maven仓库中有好多衍生的jwt依赖包,可自己在maven仓库中选择,实现大同小异. <dependency> <groupI ...

  3. thinkphp 前后端分离

    thinkphp 前后端分离 简单记录一下之前学习tp的历程吧. 前端HTML页面渲染 <?php namespace app\index\controller; use think\Contr ...

  4. 巨蟒python全栈开发flask8 MongoDB回顾 前后端分离之H5&pycharm&夜神

    1.MongoDB回顾 .启动 mongod - 改变data/db位置: --dbpath D:\data\db mongod --install 安装windows系统服务 mongod --re ...

  5. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存

    代码已上传Github+Gitee,文末有地址 上回<从壹开始前后端分离[ .NET Core2.0 Api + Vue 2.0 + AOP + 分布式]框架之九 || 依赖注入IoC学习 + ...

  6. 采用异步来实现重新连接服务器或者重新启动服务 C#中类的属性的获取 SignalR2简易数据看板演示 C#动态调用泛型类、泛型方法 asp .net core Get raw request. 从壹开始前后端分离[.NetCore 不定期更新] 38 ║自动初始化数据库

    采用异步来实现重新连接服务器或者重新启动服务 开启异步监听,不会导致主线程的堵塞,在服务异常断开后一直检测重新连接服务,成功连接服务后通知各个注册的客户端! #region 检测断线并重连OPC服务 ...

  7. SpringBootSecurity学习(12)前后端分离版之简单登录

    前后端分离 前面讨论了springboot下security很多常用的功能,其它的功能建议参考官方文档学习.网页版登录的形式现在已经不是最流行的了,最流行的是前后端分离的登录方式,前端单独成为一个项目 ...

  8. Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存

    本文梯子 本文3.0版本文章 代码已上传Github+Gitee,文末有地址 大神反馈: 零.今天完成的深红色部分 一.AOP 之 实现日志记录(服务层) 1.定义服务接口与实现类 2.在API层中添 ...

  9. spring security简单教程以及实现完全前后端分离

    spring security是spring家族的一个安全框架,入门简单.对比shiro,它自带登录页面,自动完成登录操作.权限过滤时支持http方法过滤. 在新手入门使用时,只需要简单的配置,即可实 ...

随机推荐

  1. js中用户名的正则(字符,数字,下划线,减号)

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Inse ...

  2. android中include

    android中include. include标签用法. 1.新建一个xml文件,命名 head.xml head.xml文件内容如下: <?xml version="1.0&quo ...

  3. vue配置编译本地打开dist/index.html文件

    项目完成后npm run build会生成dist文件,此时直接将dist文件发布到线上即可,若想本地打开dist/index.html可看,一般页面为空,或者报错找不到css和js文件,则需要更改一 ...

  4. node 安装 webpack

    首先要安装 Node.js, Node.js 自带了软件包管理器 npm,Webpack 需要 Node.js v0.6 以上支持,建议使用最新版 Node.js. 用 npm 安装 Webpack: ...

  5. C++使用: C++中map的基本操作和用法

    在阅读SSD代码中发现作者使用了C++中的map方法,因此搜索该关联式容器的使用方法,在这里一并总结. 一.Map 簡介 Map是STL的一個容器,它提供一對一的hash. 第一個可以稱為關鍵字(ke ...

  6. js实现下拉框模糊查询

    keyup方法触发模糊查询 list : Array<any> //下拉列表所有内容 filtList:Array<any> //过滤后的内容 inputContent : s ...

  7. jq demo 点击弹窗,居中,可滚动,可拖动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. WINDOWS SERVER 2016 设置使用照片查看器查看图片

    1.使用win+R快捷键快速打开运行,输入regedit打开注册表 2.在注册表中找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Photo Viewe ...

  9. return 返回值的用法

    #coding:utf-8 # (1)把数据返回到函数调用处 def func(): # return 1 # return "aaabb" return [1,2,3,4] re ...

  10. useradd语法2

    在Linux中 useradd 命令用来创建或更新用户信息. useradd 命令属于比较难用的命令 (low level utility for adding users),所以 Debian 系的 ...