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="123456",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' : ['1','2'], '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 点击打开页面请求下 是不是 是不是请求到数据了
数据自定义 不用再求后端修改接口了。

有问题 欢迎来指点。

 

原文地址:https://www.cnblogs.com/hill-foryou/p/10495628.html