• 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 点击打开页面请求下 是不是 是不是请求到数据了
    数据自定义 不用再求后端修改接口了。

    有问题 欢迎来指点。

     

  • 相关阅读:
    DBGridEh表尾显示合计 .....
    03004_Web开发
    雷林鹏分享:Flask请求对象
    雷林鹏分享:Flask静态文件
    雷林鹏分享:Flask模板
    雷林鹏分享:Flask HTTP方法
    雷林鹏分享:Flask URL构建
    雷林鹏分享:Flask变量规则
    雷林鹏分享:Flask路由
    雷林鹏分享:Flask应用程序
  • 原文地址:https://www.cnblogs.com/hill-foryou/p/10495628.html
Copyright © 2020-2023  润新知