diff options
author | Loïc Hoguin <[email protected]> | 2018-11-14 16:42:46 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-11-14 18:04:32 +0100 |
commit | f0cae8dbcf8d07035be069860fc4b22f7577d154 (patch) | |
tree | ed5cbc2b8a39a7a385b4c17c77e6f8b39b3f6461 | |
parent | c65e3ff20e0cf64c574d98550c2a88527dde49ce (diff) | |
download | cowboy-f0cae8dbcf8d07035be069860fc4b22f7577d154.tar.gz cowboy-f0cae8dbcf8d07035be069860fc4b22f7577d154.tar.bz2 cowboy-f0cae8dbcf8d07035be069860fc4b22f7577d154.zip |
Document some undefined behavior in cowboy_router
-rw-r--r-- | doc/src/guide/routing.asciidoc | 8 | ||||
-rw-r--r-- | src/cowboy_router.erl | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/doc/src/guide/routing.asciidoc b/doc/src/guide/routing.asciidoc index 47ef3c5..e5f8c33 100644 --- a/doc/src/guide/routing.asciidoc +++ b/doc/src/guide/routing.asciidoc @@ -124,6 +124,14 @@ You can also have imbricated optional segments. [source,erlang] PathMatch = "/hats/[page/[:number]]". +While Cowboy does not reject multiple brackets in a route, +the behavior may be undefined if the route is under-specified. +For example, this route requires constraints to determine what +is a chapter and what is a page, since they are both optional: + +[source,erlang] +PathMatch = "/book/[:chapter]/[:page]". + You can retrieve the rest of the host or path using `[...]`. In the case of hosts it will match anything before, in the case of paths anything after the previously matched segments. It is diff --git a/src/cowboy_router.erl b/src/cowboy_router.erl index 754e3e7..44a7e18 100644 --- a/src/cowboy_router.erl +++ b/src/cowboy_router.erl @@ -428,6 +428,8 @@ compile_test_() -> {[<<"horses">>], [], h, o}, {[<<"hats">>], [], h, o}, {[<<"hats">>, <<"page">>, number], [], h, o}]}]}, + {[{'_', [{"/hats/:page/:number", h, o}]}], [{'_', [], [ + {[<<"hats">>, page, number], [], h, o}]}]}, {[{'_', [{"/hats/[page/[:number]]", h, o}]}], [{'_', [], [ {[<<"hats">>], [], h, o}, {[<<"hats">>, <<"page">>], [], h, o}, |