On Thursday, November 7, 2013 4:04:58 AM UTC+4, Jimb Esser wrote:
>
> The way I've seen it done in Express.js (or its URLRouter middleware
> maybe, I'm not quite sure where it is now) is like this:
> app.get('/users/:id(\d+)', function(req, res, id) { ... });
> app.get('/users/:name', function(req, res, username) { ... });
>
>
Your regular expression will match ids that consist of one or more "d"
characters.
As far as I remember, this syntax is not recommended. There are a few fishy
parts in it, and you just demonstrated one of them (if you wanted to match
numbers, backslash should be written twice because it's a string literal,
not a regexp literal).
You can just put any regular expression in parenthesis in your route for
> how that token can be matched. Also allows for regular expressions to
> match ".*" to include slashes, etc. You could probably even use
> Express's urlrouter/lib/utils.js to build the RegExps for you if you want
> to save some work =).
>
> As for multiple URLs serving the same data, we have found it very useful
> to use the <link rel="cannonical" href="cannonical_url_here"> tag in our
> document head, not for any hand-wavy "SEO" reasons, but for the very
> tangible reason of when we (or users) do a Google search for something in
> one of our pages, there is only a single valid result instead of two nearly
> identical results with different URLs.
>
Agreed, that's one of the valid reasons I mentioned earlier.
>
> Jimb Esser
> Cloud Party, Inc
>
> On Tuesday, November 5, 2013 7:22:56 AM UTC-8, Alex Kocharin wrote:
>>
>>
>> This is how it's done in express.js:
>>
>> ```
>> app.param('id', function(req, res, next, value, name) {
>> if (value.match(/^\d+$/)) {
>> next()
>> } else {
>> next('route')
>> }
>> })
>>
>> app.get('/users/:id', function(req, res, id) { ... })
>> ```
>>
>> Do something similar. There is no need to add anything to a route,
>> because the name of the param should already imply the type.
>>
>> If you write "name", it is string, right? Anybody who reads the code will
>> understand that without any explicit "[string]" garbage attached to it.
>>
>>
>> On Monday, November 4, 2013 10:37:28 PM UTC+4, Simon wrote:
>>>
>>> In my URL routing (express/sinatra-style), I'd like to enable optional
>>> parameter "filters" (like int, hex) while keeping syntax familiar and
>>> simple. The typical syntax for a routing library might look something like:
>>>
>>> app.get('/users/:id', function(req, res, id) { ... });
>>>
>>> I'd like to introduce a syntax for catching only numeric ids so we could
>>> have another route for users by name for instance.
>>>
>>> app.get('/users/:id[int]', function(req, res, id) { ... });
>>> app.get('/users/:name', function(req, res, username) { ... });
>>>
>>> There doesn't seem to be a convention for this, so I've been considering
>>> the following:
>>>
>>> '/users/:id[int]'
>>> '/users/:id(int)'
>>> '/users/:id:int'
>>> '/users/:id=int'
>>>
>>> Any feedback on what's a good way to go that will be simple and obvious
>>> to someone reading the code? If a well-known library is already doing
>>> something like this I'll go with whatever the community is using. Votes
>>> welcome..
>>>
>>>
>>>
--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.