fix routing issue with slashes
This commit is contained in:
parent
13f81e9a6f
commit
21fb1dff7e
|
@ -98,10 +98,15 @@ class Router:
|
||||||
def add(self, uri, methods, handler, host=None):
|
def add(self, uri, methods, handler, host=None):
|
||||||
# add regular version
|
# add regular version
|
||||||
self._add(uri, methods, handler, host)
|
self._add(uri, methods, handler, host)
|
||||||
slash_is_missing = (not uri[-1].endswith('/')
|
slash_is_missing = (
|
||||||
and not self.routes_all.get(uri + '/', False))
|
not uri[-1] == '/'
|
||||||
without_slash_is_missing = (not self.routes_all.get(uri[:-1], False)
|
and not self.routes_all.get(uri + '/', False)
|
||||||
and uri is not '/')
|
)
|
||||||
|
without_slash_is_missing = (
|
||||||
|
uri[-1] == '/'
|
||||||
|
and not self.routes_all.get(uri[:-1], False)
|
||||||
|
and not uri == '/'
|
||||||
|
)
|
||||||
# add version with trailing slash
|
# add version with trailing slash
|
||||||
if slash_is_missing:
|
if slash_is_missing:
|
||||||
self._add(uri + '/', methods, handler, host)
|
self._add(uri + '/', methods, handler, host)
|
||||||
|
|
|
@ -498,6 +498,19 @@ def test_remove_inexistent_route():
|
||||||
with pytest.raises(RouteDoesNotExist):
|
with pytest.raises(RouteDoesNotExist):
|
||||||
app.remove_route('/test')
|
app.remove_route('/test')
|
||||||
|
|
||||||
|
def test_removing_slash():
|
||||||
|
app = Sanic(__name__)
|
||||||
|
|
||||||
|
@app.get('/rest/<resource>')
|
||||||
|
def get(_):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@app.post('/rest/<resource>')
|
||||||
|
def post(_):
|
||||||
|
pass
|
||||||
|
|
||||||
|
assert len(app.router.routes_all.keys()) == 2
|
||||||
|
|
||||||
|
|
||||||
def test_remove_unhashable_route():
|
def test_remove_unhashable_route():
|
||||||
app = Sanic('test_remove_unhashable_route')
|
app = Sanic('test_remove_unhashable_route')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user