Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
WWW-Authenticate в ответе. Вот здесь есть более подробный ответ. Если вам не нужно выводить это окно пользователю, просто разберитесь, откуда берется этот заголовок и не надо устраивать махинаций с кодами ответа, пожалуйстаdef get_task(task_id):
for task in tasks:
if t['id'] == tasks_id:
return jsonify({'task': task})
abort(404)
make_public_task можно написать проще:def make_public_task(task):
return dict(k, v for k, v in task.items() if k != 'id',
url=url_for('get_task', task_id=task['id'], _external=True))
if len(task) == 0 лучше писать просто if not task.return None в конце тела функции писать не нужно — это делается автоматически.isinstance(obj, cls), конкретно в случае со строками используя isinstance(s, basestring) (актуально для Python 2).@app.route('/tasks/<int:task_id>', methods=['GET'])
def get_task(task_id):
task = filter(lambda t: t['id'] == task_id, tasks)
if len(task) == 0:
abort(404)
if task_id==2:
print "sleeping..."
time.sleep(1000)
return jsonify({'task': task[0]})
* Running on http://0.0.0.0:8888/
* Restarting with reloader
127.0.0.1 - - [21/Jan/2015 14:06:47] "GET /tasks/3 HTTP/1.1" 404 -
127.0.0.1 - - [21/Jan/2015 14:06:51] "GET /tasks/1 HTTP/1.1" 200 -
sleeping...
Проектирование RESTful API с помощью Python и Flask