我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用bottle.route()。
def flask(body, headers): import flask path = '/hello/<account_id>/test' flask_app = flask.Flask('hello') @flask_app.route(path) def hello(account_id): request = flask.request user_agent = request.headers['User-Agent'] # NOQA limit = request.args.get('limit', '10') # NOQA return flask.Response(body, headers=headers, mimetype='text/plain') return flask_app
def http(host, port): from bottle import route, response, run @route('/') def root(): return http_root_str @route('/<s:path>') def do_conversion(s): try: i = parse_input(s) except ValueError as e: response.status = 400 return str(e) return convert(i) run(host=host, port=port)
def test_unicode(self): self.app.route('/')(lambda: touni('äöüß')) self.assertBody(touni('äöüß').encode('utf8')) self.app.route('/')(lambda: [touni('äö'), touni('üß')]) self.assertBody(touni('äöüß').encode('utf8')) @self.app.route('/') def test5(): bottle.response.content_type='text/html; charset=iso-8859-15' return touni('äöüß') self.assertBody(touni('äöüß').encode('iso-8859-15')) @self.app.route('/') def test5(): bottle.response.content_type='text/html' return touni('äöüß') self.assertBody(touni('äöüß').encode('utf8'))
def test_iterator_with_close(self): class MyIter(object): def __init__(self, data): self.data = data self.closed = False def close(self): self.closed = True def __iter__(self): return iter(self.data) byte_iter = MyIter([tob('abc'), tob('def')]) unicode_iter = MyIter([touni('abc'), touni('def')]) for test_iter in (byte_iter, unicode_iter): @self.app.route('/') def test(): return test_iter self.assertInBody('abcdef') self.assertTrue(byte_iter.closed)
def bottle(body, headers): import bottle path = '/hello/<account_id>/test' @bottle.route(path) def hello(account_id): user_agent = bottle.request.headers['User-Agent'] # NOQA limit = bottle.request.query.limit or '10' # NOQA return bottle.Response(body, headers=headers) return bottle.default_app()
def hello(): """ route ??????URL??????????????????? ?????? ????return??????????????????? route??????????????????URL?????????????? :return: """ return "Hello World!"
def server_static(filename): """ route to the css and static files""" if ".." in filename: return HTTPError(status=403) return bottle.static_file(filename, root='%s/static' % get_config('api', 'view-path', '/etc/softfire/views')) ######### # Utils # #########
def route_server(self, sconfig): resource='/server/' if 'web' in sconfig and 'hook_route' in sconfig['web']: resource=sconfig['web']['hook_route'] else: logging.error( "Webrouter: No valid resource route found. Taking defaults {}". format(resource)) logging.info("Webrouter: starting routing on {}".format(resource)) bottle.route(resource, 'POST')(self.wsapp.exf_server)
def route_client(self, cconfig): resource='/client/' if 'web' in cconfig and 'hook_route' in cconfig['web']: resource=cconfig['web']['hook_route'] else: logging.error( "Webrouter: No valid resource route found. Taking defaults {}". format(resource)) logging.info("Webrouter: starting routing on {}".format(resource)) bottle.route(resource, 'POST')(self.wsapp.exf_client)
def show_posts(page_id): return template('templates/posts', title='{} Posts'.format(get_page_name(page_id)), page_list=get_page_list(), post_list=get_posts_ordered_by_popularity(page_id), page_id=page_id) # @route('/<page_name>/') # def page_name_posts(page_name): # return template('templates/posts', title=page_name, page_list=get_page_list(), post_list=get_posts_ordered_by_popularity('40796308305'), page_id='40796308305') # # post_list=get_posts_ordered_by_popularity(page_id), page_id=page_id) # TODO fix latest template, broken
def test_bytes(self): self.app.route('/')(lambda: tob('test')) self.assertBody('test')
def test_bytearray(self): self.app.route('/')(lambda: map(tob, ['t', 'e', 'st'])) self.assertBody('test')
def test_tuple(self): self.app.route('/')(lambda: ('t', 'e', 'st')) self.assertBody('test')
def test_emptylist(self): self.app.route('/')(lambda: []) self.assertBody('')
def test_none(self): self.app.route('/')(lambda: None) self.assertBody('')
def test_error(self): self.app.route('/')(lambda: 1/0) self.assertStatus(500) self.assertInBody('ZeroDivisionError')
def test_fatal_error(self): @self.app.route('/') def test(): raise KeyboardInterrupt() self.assertRaises(KeyboardInterrupt, self.assertStatus, 500)
def test_file(self): self.app.route('/')(lambda: tobs('test')) self.assertBody('test')
def test_json(self): self.app.route('/')(lambda: {'a': 1}) try: self.assertBody(bottle.json_dumps({'a': 1})) self.assertHeader('Content-Type','application/json') except ImportError: warn("Skipping JSON tests.")
def test_json_HTTPResponse(self): self.app.route('/')(lambda: bottle.HTTPResponse({'a': 1}, 500)) try: self.assertBody(bottle.json_dumps({'a': 1})) self.assertHeader('Content-Type','application/json') except ImportError: warn("Skipping JSON tests.")
def test_json_HTTPError(self): self.app.error(400)(lambda e: e.body) self.app.route('/')(lambda: bottle.HTTPError(400, {'a': 1})) try: self.assertBody(bottle.json_dumps({'a': 1})) self.assertHeader('Content-Type','application/json') except ImportError: warn("Skipping JSON tests.")
def test_generator_callback(self): @self.app.route('/') def test(): bottle.response.headers['Test-Header'] = 'test' yield 'foo' self.assertBody('foo') self.assertHeader('Test-Header', 'test')
def test_empty_generator_callback(self): @self.app.route('/') def test(): yield bottle.response.headers['Test-Header'] = 'test' self.assertBody('') self.assertHeader('Test-Header', 'test')
def test_error_in_generator_callback(self): @self.app.route('/') def test(): yield 1/0 self.assertStatus(500) self.assertInBody('ZeroDivisionError')
def test_httperror_in_generator_callback(self): @self.app.route('/') def test(): yield bottle.abort(404, 'teststring') self.assertInBody('teststring') self.assertInBody('404 Not Found') self.assertStatus(404)
def test_httpresponse_in_generator_callback(self): @self.app.route('/') def test(): yield bottle.HTTPResponse('test') self.assertBody('test')
def test_unicode_generator_callback(self): @self.app.route('/') def test(): yield touni('äöüß') self.assertBody(touni('äöüß').encode('utf8'))
def test_invalid_generator_callback(self): @self.app.route('/') def test(): yield 1234 self.assertStatus(500) self.assertInBody('Unsupported response type')
def test__header(self): @bottle.route('/') @bottle.auth_basic(lambda x, y: False) def test(): return {} self.assertStatus(401) self.assertHeader('Www-Authenticate', 'Basic realm="private"')
def test_get(self): """ WSGI: GET routes""" @bottle.route('/') def test(): return 'test' self.assertStatus(404, '/not/found') self.assertStatus(405, '/', post="var=value") self.assertBody('test', '/')
def test_post(self): """ WSGI: POST routes""" @bottle.route('/', method='POST') def test(): return 'test' self.assertStatus(404, '/not/found') self.assertStatus(405, '/') self.assertBody('test', '/', post="var=value")
def test_headget(self): """ WSGI: HEAD routes and GET fallback""" @bottle.route('/get') def test(): return 'test' @bottle.route('/head', method='HEAD') def test2(): return 'test' # GET -> HEAD self.assertStatus(405, '/head') # HEAD -> HEAD self.assertStatus(200, '/head', method='HEAD') self.assertBody('', '/head', method='HEAD') # HEAD -> GET self.assertStatus(200, '/get', method='HEAD') self.assertBody('', '/get', method='HEAD')
def test_request_attrs(self): """ WSGI: POST routes""" @bottle.route('/') def test(): self.assertEqual(bottle.request.app, bottle.default_app()) self.assertEqual(bottle.request.route, bottle.default_app().routes[0]) return 'foo' self.assertBody('foo', '/')
def test_500(self): """ WSGI: Exceptions within handler code (HTTP 500) """ @bottle.route('/') def test(): return 1/0 self.assertStatus(500, '/')
def test_500_unicode(self): @bottle.route('/') def test(): raise Exception(touni('Unicode äöüß message.')) self.assertStatus(500, '/')
def test_utf8_url(self): """ WSGI: UTF-8 Characters in the URL """ @bottle.route('/my-öäü/:string') def test(string): return string self.assertBody(tob('urf8-öäü'), '/my-öäü/urf8-öäü')
def test_401(self): """ WSGI: abort(401, '') (HTTP 401) """ @bottle.route('/') def test(): bottle.abort(401) self.assertStatus(401, '/') @bottle.error(401) def err(e): bottle.response.status = 200 return str(type(e)) self.assertStatus(200, '/') self.assertBody("<class 'bottle.HTTPError'>",'/')
def test_303(self): """ WSGI: redirect (HTTP 303) """ @bottle.route('/') def test(): bottle.redirect('/yes') @bottle.route('/one') def test2(): bottle.redirect('/yes',305) env = {'SERVER_PROTOCOL':'HTTP/1.1'} self.assertStatus(303, '/', env=env) self.assertHeader('Location', 'http://127.0.0.1/yes', '/', env=env) env = {'SERVER_PROTOCOL':'HTTP/1.0'} self.assertStatus(302, '/', env=env) self.assertHeader('Location', 'http://127.0.0.1/yes', '/', env=env) self.assertStatus(305, '/one', env=env) self.assertHeader('Location', 'http://127.0.0.1/yes', '/one', env=env)
def test_cookie(self): """ WSGI: Cookies """ @bottle.route('/cookie') def test(): bottle.response.set_cookie('b', 'b') bottle.response.set_cookie('c', 'c', path='/') return 'hello' try: c = self.urlopen('/cookie')['header'].get_all('Set-Cookie', '') except: c = self.urlopen('/cookie')['header'].get('Set-Cookie', '').split(',') c = [x.strip() for x in c] self.assertTrue('b=b' in c) self.assertTrue('c=c; Path=/' in c)
def test_single_path(self): @bottle.route('/a') def test(): return 'ok' self.assertBody('ok', '/a') self.assertStatus(404, '/b')
def test_path_list(self): @bottle.route(['/a','/b']) def test(): return 'ok' self.assertBody('ok', '/a') self.assertBody('ok', '/b') self.assertStatus(404, '/c')
def test_no_path(self): @bottle.route() def test(x=5): return str(x) self.assertBody('5', '/test') self.assertBody('6', '/test/6')
def test_no_params_at_all(self): @bottle.route def test(x=5): return str(x) self.assertBody('5', '/test') self.assertBody('6', '/test/6')
def test_method_list(self): @bottle.route(method=['GET','post']) def test(): return 'ok' self.assertBody('ok', '/test', method='GET') self.assertBody('ok', '/test', method='POST') self.assertStatus(405, '/test', method='PUT')
def test_apply(self): def revdec(func): def wrapper(*a, **ka): return reversed(func(*a, **ka)) return wrapper @bottle.route('/nodec') @bottle.route('/dec', apply=revdec) def test(): return '1', '2' self.assertBody('21', '/dec') self.assertBody('12', '/nodec')
def test_apply_list(self): def revdec(func): def wrapper(*a, **ka): return reversed(func(*a, **ka)) return wrapper def titledec(func): def wrapper(*a, **ka): return ''.join(func(*a, **ka)).title() return wrapper @bottle.route('/revtitle', apply=[revdec, titledec]) @bottle.route('/titlerev', apply=[titledec, revdec]) def test(): return 'a', 'b', 'c' self.assertBody('cbA', '/revtitle') self.assertBody('Cba', '/titlerev')
def test_hooks(self): @bottle.route() def test(): return bottle.request.environ.get('hooktest','nohooks') @bottle.hook('before_request') def hook(): bottle.request.environ['hooktest'] = 'before' @bottle.hook('after_request') def hook(): bottle.response.headers['X-Hook'] = 'after' self.assertBody('before', '/test') self.assertHeader('X-Hook', 'after', '/test')
def test_template(self): @bottle.route(template='test {{a}} {{b}}') def test(): return dict(a=5, b=6) self.assertBody('test 5 6', '/test')
def test_name(self): @bottle.route(name='foo') def test(x=5): return 'ok' self.assertEquals('/test/6', bottle.url('foo', x=6))