Мое решение - обертка вокруг app.route:
def corsapp_route(path, origin=('127.0.0.1',), **options):
"""
Flask app alias with cors
:return:
"""
def inner(func):
def wrapper(*args, **kwargs):
if request.method == 'OPTIONS':
response = make_response()
response.headers.add("Access-Control-Allow-Origin", ', '.join(origin))
response.headers.add('Access-Control-Allow-Headers', ', '.join(origin))
response.headers.add('Access-Control-Allow-Methods', ', '.join(origin))
return response
else:
result = func(*args, **kwargs)
if 'Access-Control-Allow-Origin' not in result.headers:
result.headers.add("Access-Control-Allow-Origin", ', '.join(origin))
return result
wrapper.__name__ = func.__name__
if 'methods' in options:
if 'OPTIONS' in options['methods']:
return app.route(path, **options)(wrapper)
else:
options['methods'].append('OPTIONS')
return app.route(path, **options)(wrapper)
return wrapper
return inner
@corsapp_route('/', methods=['POST'], origin=['*'])
def hello_world():
...
Ну, JavaScript - это язык, основанный на прототипах, в нем нет классов, но вы можете иметь классическое наследование и другие шаблоны повторного использования поведения через клонирование объектов и создание прототипов.
Рекомендуемые статьи:
Это «вроде» возможно. Prototype имеет встроенную помощь по написанию классов на JS. Взгляните на это подробное описание того, как это можно сделать.
var namedClass = Class.create({
initialize: function(name) {
this.name = name;
}
getName: function() {
return this.name;
}
});
var instance = new namedClass('Foobar');
Если вы используете библиотеку, такую как prototype или jQuery, это намного проще, но унаследованный способ сделать это.
function MyClass(){
}
MyClass.prototype.aFunction(){
}
var instance = new MyClass();
instance.aFunction();
Вы можете узнать больше об этом здесь http: // www .komodomedia.com / blog / 2008/09 / javascript-classes-for-n00bs /
JavaScript основан на объектах, а не на классах. Он использует прототипное наследование, а не классическое наследование.
JavaScript гибок и легко расширяется. В результате существует множество библиотек, которые добавляют классическое наследование в JavaScript.
function Foo() {
// constructor
}
Foo.prototype.bar = function() {
// bar function within foo
}
Javascript по умолчанию использует объектно-ориентированный объект на основе прототипов.
Однако, если вы используете библиотеку прототипов, например, вы можете использовать Class.create ().
http: / /prototypejs.org/api/class/create
Это позволит вам создать (или унаследовать) класс, после чего вы создадите его экземпляры с помощью new.
Другие библиотеки, вероятно, имеют аналогичные возможности.