flask 完成简单查询请求处理,及跨域
flask通用项目结构
| - projectName
| - app //程序包
| - templates //jinjia2模板
|- static //css,js 图片等静态文件
| - main //py程序包 ,可以有多个这种包,每个对应不同的功能
| - __init__.py
|- errors.py
|- forms.py
|- views.py
|- __init__.py
|- email.py //邮件处理程序
|- models.py //数据库模型
|- migrations //数据迁移文件夹
| - tests //单元测试
|- __init__.py
|- test*.py //单元测试程序,可以包含多个对应不同的功能点测试
|- venv //虚拟环境
|- requirements.txt //列出了所有依赖包以及版本号,方便在其他位置生成相同的虚拟环境以及依赖
|- config.py //全局配置文件,配置全局变量
|- manage.py //启动程序
flask 简介
http://docs.jinkan.org/docs/flask/quickstart.html#a-minimal-application
主体代码逻辑
一个最简单的查询服务样例
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#-------------------------------------------------------------------------------
'''
@Author : {SEASON}
@License : (C) Copyright 2013-2022, {OLD_IT_WANG}
@Contact : {shiter@live.cn}
@Software: PyCharm
@File :
@Time : 2019/4/25 14:57
@Desc :
'''
#-------------------------------------------------------------------------------
import json
import random
import logging
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask import request,Response
from flask_cors import CORS
log_file_str = 'shuanghe_demo.log'
log_level = logging.INFO
app = Flask(__name__)
CORS(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@ip:3306/database'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
english_chinese_dict = {'id':'身份证号',
'name':'姓名',
'sex':'性别',
'age':'年龄',
}
class neihuang_underwriting_search_result(db.Model):
__tablename__ = 'neihuang_underwriting_search_result'
id = db.Column(db.String(32),primary_key=True)
name = db.Column(db.String(32))
sex = db.Column(db.String(32))
age = db.Column(db.String(32))
def __repr__(self):
return '<neihuang_underwriting_search_result %r>' % self.id
def convert_to_dict(obj):
'''把Object对象转换成Dict对象'''
result_dict = {}
result_dict.update(obj.__dict__)
result_dict.pop('_sa_instance_state', None)
result_dict = random_value_of_labels(result_dict)
return result_dict
def get_id_result(id):
result = neihuang_underwriting_search_result.query.filter_by(id=id).one()
result_dict = convert_to_dict(result)
# result_list = database_name_conversion(result_dict)
result_json = json.dumps(result_dict,ensure_ascii=False)
return result_json
@app.route('/api/search',methods=['POST','GET'])
def search():
#result_json = get_id_result(id)
if request.method == 'GET':
user_id = json.loads(''.join(x for x in request.args))['id']
print(user_id)
app.logger.info(user_id + ' is search ING .......')
result_json = get_id_result(user_id)
return Response(result_json)
if __name__ == '__main__':
handler = logging.FileHandler(log_file_str, encoding='UTF-8')
handler.setLevel(log_level)
logging_format = logging.Formatter(
'%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
handler.setFormatter(logging_format)
app.logger.addHandler(handler)
app.run(debug=True, host='0.0.0.0', port=18081)
#放在这里是不对的
# CORS(app, supports_credentials=True)
flask 跨域问题的处理
在处理跨域问题时候,应该把下列代码弄成全局的,也就是放
app = Flask(name)
cors = CORS(app)
否则跨域问题依然存在,报错信息为:
Access to XMLHttpRequest at ‘-----’ from origin ‘http://localhost:63342’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
flask 日志
https://blog.csdn.net/iszhenyu/article/details/56846551
flask 微服务Flask-RESTful
写完了发现
https://flask-restful.readthedocs.io/en/latest/
启动服务命令
参考:https://www.cnblogs.com/zzyoucan/p/7764590.html
nohup command > myout.file 2>&1 &
flask 完成简单查询请求处理,及跨域的更多相关文章
- Flask框架踩坑之ajax跨域请求
业务场景: 前后端分离需要对接数据接口. 接口测试是在postman做的,今天才开始和前端对接,由于这是我第一次做后端接口开发(第一次嘛,问题比较多)所以在此记录分享我的踩坑之旅,以便能更好的理解,应 ...
- 简单的jsonp实现跨域原理
什么原因使jsonp诞生? 传说,浏览器有一个很重要的安全限制,叫做"同源策略".同源是指,域名,协议,端口相同.举个例子,用一个浏览器分别打开了百度和谷歌页面,百度页面在执行脚 ...
- 【spring boot】SpringBoot初学(9.1)– 简单配置corsFilter对跨域请求支持
前言 只是简单的配置实现了cors,并没有讲任何东西.(有兴趣的可看: CORS 跨域 实现思路及相关解决方案) github: https://github.com/vergilyn/SpringB ...
- 闲来无事做了一个项目,内有redis,EasyUI样式简单应用,七层分页查询,API跨域。
<link href="~/jquery-easyui-1.5.3/themes/default/easyui.css" rel="stylesheet" ...
- gulp+apache代理请求处理javascript跨域请求
apache设置(参考) 用 apache 的 mod_proxy 模块开启反向代理功能来实现: 1 修改 apache 配置文件 httpd.conf ,去掉以下两行前面 # 号 LoadModul ...
- Ajax接触及对跨域的简单理解
[Ajax]Ajax技术能够向服务器请求额外的数据而无须卸载页面能带来更好的用户体验.Ajax技术的核心是XMLHttpRequest对象(简称XHR),XHR向服务器发送请求和解析拂去其响应提供了流 ...
- C# ASP.NET MVC/WebApi 或者 ASP.NET CORE 最简单高效的跨域设置
概述 前面写了一篇:<C# ASP.NET WebApi 跨域设置>的文章,主要针对 ASP.NET WebApi 项目. 今天遇到 ASP.NET MVC 项目也需要设置跨域,否则浏览器 ...
- 前端Js跨域方法汇总—剪不断,理还乱,是跨域
1.通过jsonp跨域2.通过修改document.domain来跨子域(iframe)3.隐藏的iframe+window.name跨域4.iframe+跨文档消息传递(XDM)5.跨域资源共享 C ...
- js中各种跨域问题实战小结(一)
什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...
随机推荐
- Java基础之IO流整理
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
- 1.softmax初探
1.softmax初探在机器学习尤其是深度学习中,softmax是个非常常用而且比较重要的函数,尤其在多分类的场景中使用广泛.他把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率 ...
- Java IO流操作 (I)
1.FileWriter 写数据---输出流---由控制台向文件中写数据 import java.io.FileWriter; import java.io.IOException; /* * 写数据 ...
- .NET技术-4.0. NETCORE跨域
.NET技术-4.0. NETCORE跨域 1.安装程序CORS程序包,一般默认都带了此程序包的 Install-Package Microsoft.AspNetCore.Mvc.Cors 2.配置C ...
- 洛谷P1257(暴力超时)
1.先输入再求勾股定理会超时 2.需要一边输入一边求. #include<iostream> #include<cmath>#include<cstdio> usi ...
- 洛谷 P2320 [HNOI2006]鬼谷子的钱袋
题目传送门 解题思路: 对于每一个数i,我们都可以用i/2来表示,而对于i/2我们可以用i/4表示......(以此类推) 举个例子,对于10,我们可以用5 + 5来表示,而5可以用 3 + 2表示, ...
- Json返回结果为null属性不显示解决
import java.io.IOException; import org.springframework.boot.autoconfigure.condition.ConditionalOnMis ...
- python 爬虫 多线程 多进程
一.程序.进程和线程的理解 程序:就相当于一个应用(app),例如电脑上打开的一个程序. 进程:程序运行资源(内存资源)分配的最小单位,一个程序可以有多个进程. 线程:cpu最小的调度单位,必须依赖 ...
- 如何快速完成一份学术型PPT
大多人都知道有模板这么个东西. 但是拿到手却不会运用,所以只得急的找人帮忙. 毕竟一套模板的素材图表和你要展示的内容,很多都太不一样. 这种情况,怎么办?下面就来告诉你. 选中一套模版后,放大看看 ...
- 翻译——2_Linear Regression and Support Vector Regression
续上篇 1_Project Overview, Data Wrangling and Exploratory Analysis 使用不同的机器学习方法进行预测 线性回归 在这本笔记本中,将训练一个线性 ...