Общение с службой REST с использованием Python/Flask, JavaScript и AjaxJavascript

Форум по Javascript
Ответить
Anonymous
 Общение с службой REST с использованием Python/Flask, JavaScript и Ajax

Сообщение Anonymous »

У меня есть веб -приложения, получая данные из базы данных, стоящей за службой REST Создание вывода в форме таблицы:

Как вы видите, есть две кнопки (собирать/архив) в каждой строке таблицы, разрешающей, позволяя разрешить, что позволяет получить Пользователь обновляет базу данных через другую службу REST, которая принимает данные через HTML PUT. Когда кнопка нажимается, выполняется следующий код: < /p>

Код: Выделить всё

function updateSourceState(sourceTypeId, sourceId, dataForUpdate) {
$.ajax({
url: '/update',
data: {source_type_id: sourceTypeId, source_id: sourceId, data_for_update: dataForUpdate},
dataType: 'json',
type: 'PUT',
success: function (data) {
console.log('Data updated successfully');
},
error: function(data) {
console.log('Data update failed. Response: ' + data);
}
}).done(function() {
console.log('DONE: data updated successfully');
}).fail(function(msg) {
console.log('FAIL: data update failed: ' + msg);
}).always(function(msg) {
console.log('ALWAYS message: ' + dataForUpdate + ', url: ' + url);
});
}
Взаимодействие со службой REST реализовано с помощью Python-Flask и JavaScript. Основная программа (WebViewer.py) определяет маршруты следующим образом:

Код: Выделить всё

@bp.route('/update')
def update_source_state():
app.logger.debug('[DEBUG] entering update_source_state()')

source_id = request.args.get('source_id')
source_type = request.args.get('source_type_id')
dataForUpdate = request.args.get('data_for_update')

url = '{0}/{1}/source/{2}'.format(ARCHIVE_CONFIG_BASE_URL, source_type, source_id)
response = requests.put( url=url
, data=dataForUpdate
, headers={'Content-Type': 'application/json', 'accept': 'application/json'}
)

if response.status_code == 200:
return jsonify({'status': 'success'}), 200
elif response.status_code == 405:
return jsonify({'status': 'method not allowed'}), 405
elif response.status_code == 500:
return jsonify({'status': 'server error'}), 500
else:
return jsonify({'status': 'failed'}), 600
В отладчике браузера я вижу, что вызывается javascript updateSourceState() и заполняются переменные. Однако я никогда не вижу, чтобы выходные данные app.logger.debug(...) появлялись в файле журнала. Сервер отвечает состоянием 405. Судя по всему, метод update_source_state() не вызывается (но я не уверен).
Каков правильный синтаксис для выполнения PUT-запрос к службе REST в этой настройке? Любая помощь приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/793 ... t-and-ajax
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»