akka/akka-http

Provide Segments path directive that matches 0 to n segments regardless of leading slashes

Open

#879 opened on Feb 20, 2017

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Scala (598 forks)batch import
1 - triagedhelp wantedt:routing

Repository metrics

Stars
 (1,311 stars)
PR merge metrics
 (Avg merge 1d 10h) (2 merged PRs in 30d)

Description

The existing Segments PathMatcher is mostly useful when trailing slashes are enforced everywhere. When no trailing slashes it is a bit more complicated right now to get a list of segments.

The implementation can be basically this:

def pathSegments: Directive1[List[String]] = (Slash ~ Segment).repeat(0, 128, PathMatchers.Neutral) ~ PathEnd // or PathEndOrSingleSlash?

It would allow to use

pathPrefix("tree") {
  pathSegments { segments =>
    ...
  }
}

which would match all of

  • /tree
  • /tree/abc
  • /tree/abc/def

but not

  • /tree/
  • /tree/abc/

/cc @lihaoyi

Contributor guide