winserver2012服务器+python+flask+tornado+nginx实现一个简单的接口

------------恢复内容开始------------

1.本地创建两个python文件

app.py
server.py

(1)app.py使用flask实现路由跳转和数据的收发

from flask import Flask, jsonify
from flask_cors import *
app = Flask(__name__)
# 用来实现cors跨域
CORS(app, supports_credentials=True, resources=r"/*")

@app.route('/api/<page>', methods=['GET', 'POST'])
def get_json_data(page):
    return jsonify(data2)

data2 = [
    {
        'id': 1001,
        'name': '张三',
        'age': 18,
        'dec': '一名优秀的前端工程师'
    },
    {
        'id': 1002,
        'name': '李四',
        'age': 19,
        'dec': '一名特别优秀的前端工程师'
    },
    {
        'id': 1003,
        'name': '王五',
        'age': 20,
        'dec': '一名优秀的前端工程师'
    }
]

if __name__ == '__main__':
    app.run( host='0.0.0.0')    # ip设置为0.0.0.0允许所有主机对这个接口进行访问

(2)在app.py同级下新建server.py

server.py使用tornado作为启动服务器,对需要的端口进行监听,将app.py文件交给tornado进行托管

from tornado.httpserver import HTTPServer       # 提供HTTP服务
from tornado.wsgi import WSGIContainer          # 提供WSGI服务
from app import app
from tornado.ioloop import IOLoop               # loop

s = HTTPServer(WSGIContainer(app))              # tornado托管app
s.listen(8080)                                  # 监听8888端口
IOLoop.current().start()                        # 开启

2.在服务器上配置nginx

(1)下载nginx:http://nginx.org/en/download.html,通过此下载连接,下载稳定版本的nginx压缩包

(2)下载完成后将其解压缩到云服务器上

(3)解压完成后配置nginx.conf文件

    server {
        listen       8080;    # 配置监听的端口
        server_name  106.52.40.160; # 服务器公网ip

        location / {
            root   E:/myFlask;    # 文件的根目录
        }
    }

(4)启动nginx:start nginx.exe(注:如果启动时,nginx不是内部命令,请切换到nginx.exe所在的目录地址)

3.将app.py和server.py复制到服务器的E:/myFlask目录下

4.启动server.py文件,开启tornado本地服务,运行python server.py

注:(1) 启动之前服务器上必须安装好python flask tornado flask-cors

       (2) 启动后,关闭cmd窗口会关闭tornado开启的服务,这里可以不关闭,如果想要在后台一直运行,可以开启win服务

  (3)想要关闭时,可以直接关闭命令窗口

5.实验效果

(1)前端发送ajax请求

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>接口测试</title>
</head>
<body>
  <p></p>
</body>
<script>
  let xhr = new XMLHttpRequest()
  let data = null
  let p = document.querySelector('p')
  xhr.open('get', 'http://123.45.40.160:8080/api/1')

  xhr.send()
  xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
      data = JSON.parse(xhr.responseText)
      console.log(data);
    }
  }
</script>
</html>

(2)请求到的结果

 

posted @ 2021-04-23 15:28  xiaoxu1024  阅读(390)  评论(0)    收藏  举报