Comments (4)
@hieulw Using :
may not be a safe pattern since it is a reserved token in the RFC specification. Regardless, you can continue to use it as described in the docs for regex matching.
@app.get(r"/<entity_id:(?P<entity_id>.*)\:mode>")
async def handler(request: Request, entity_id):
return json({"entity_id": entity_id})
Since your example only contains one matching group (the entity_id
) you can simplify it:
@app.get(r"/<entity_id:(.*)\:mode>")
To have an exact parity with the str
pattern:
@app.get(r"/<entity_id:([^/]+)\:mode>")
This final one is probably what you want.
I hope you fix the regex pattern to suit more cases.
I am not aware of any unsupported cases that do not meet the documentation. Happy to hear if there are others.
from sanic-routing.
@hieulw Nothing we can't solve without a bit of regex magic 🪄
@app.get(r"/<entity_id:([^/]+)\:mode>")
async def handler_mode(request: Request, entity_id):
return json({"entity_id": entity_id, "mode": True})
@app.get(r"/<entity_id:(?P<entity_id>[^/]+)(?!\:mode)>")
async def handler_reg(request: Request, entity_id):
return json({"entity_id": entity_id, "mode": False})
$ curl localhost:9999/1234 localhost:9999/4567:mode
{"entity_id":"1234","mode":false}
{"entity_id":"4567","mode":true}
from sanic-routing.
I attempt to change the regex, but it will not recognize a route that contains colon :
How can I change this behavior ? :
is really needed in my route, and It cannot change
from sanic-routing.
@app.get(r"/<entity_id:([^/]+)\:meta>")
Thanks @ahopkins! This approach works very well, but it seems /<entity_id>
and /<entity_id:([^/]+)\:meta>
are considered the same route, which not what I expected.
from sanic-routing.
Related Issues (20)
- `RouteExists` thrown when registering a directory and a missing file to the same route. HOT 1
- path_to_parts parsing bug HOT 6
- Pattern registration auto-compile HOT 1
- Context managed code generation
- Having two or more <path> routes does not work with different methods HOT 6
- Regex params not type cast
- `404`s with parameter type `path` HOT 11
- Incorrect handling of `pattern` argument for `register_pattern` HOT 2
- Unique route names
- [Feature] Fallback route when none match HOT 2
- Colon in uri generate response 404 HOT 2
- parts_to_path, raises exception for part with multiple parameters without type hint HOT 1
- Websocket conflicts with http GET
- Unquoted URLs should be case-insensitive
- Parameter types are broken when using <something:path>
- "unquote=True" breaks int path parameters HOT 1
- Parameterized Route returns 404 instead of 405 HOT 2
- Expandable routes have more priority than static routes when adding a trailing slash to the path HOT 2
- Requirements based on equality
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sanic-routing.