Class PathDirectives

  • Direct Known Subclasses:
    RangeDirectives

    public abstract class PathDirectives
    extends ParameterDirectives
    Only path prefixes are matched by these methods, since any kind of chaining path extractions in Java would just look cumbersome without operator overloads; hence, no PathMatcher for Java.

    Just nest path() directives with the required types, ending in pathEnd() if you want to fail further paths.

    • Constructor Detail

      • PathDirectives

        public PathDirectives()
    • Method Detail

      • ignoreTrailingSlash

        public Route ignoreTrailingSlash​(java.util.function.Supplier<Route> inner)
        Tries to match the inner route and if it fails with an empty rejection, it tries it again adding (or removing) the trailing slash on the given path.
        Parameters:
        inner - (undocumented)
        Returns:
        (undocumented)
      • path

        public Route path​(java.lang.String segment,
                          java.util.function.Supplier<Route> inner)
        Matches a prefix to the remaining unmatched path after consuming a leading slash. The matcher has to match the remaining path completely. If matched the value matching the prefix is extracted on the directive level.
        Parameters:
        segment - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • path

        public Route path​(java.util.function.Function<java.lang.String,​Route> inner)
      • path

        public Route path​(PathMatcher0 p,
                          java.util.function.Supplier<Route> inner)
        Applies the given PathMatcher0 to the remaining unmatched path after consuming a leading slash. The matcher has to match the remaining path completely. If matched the value extracted by the PathMatcher0 is extracted on the directive level.
        Parameters:
        p - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • path

        public <T1,​T2> Route path​(PathMatcher2<T1,​T2> p,
                                        java.util.function.BiFunction<T1,​T2,​Route> inner)
      • path

        public <T> Route path​(Unmarshaller<java.lang.String,​T> t,
                              java.util.function.Function<T,​Route> inner)
        Consumes a leading slash and extracts the next path segment, unmarshalling it and passing the result to the inner function, expecting the full path to have been consumed then.
        Parameters:
        t - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathEnd

        public Route pathEnd​(java.util.function.Supplier<Route> inner)
        Rejects the request if the unmatchedPath of the RequestContext is non-empty, or said differently: only passes on the request to its inner route if the request path has been matched completely.
        Parameters:
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathPrefix

        public Route pathPrefix​(java.lang.String segment,
                                java.util.function.Supplier<Route> inner)
        Matches a prefix to the remaining unmatched path after consuming a leading slash. The matcher has to match a prefix of the remaining path. If matched the value matching the prefix is extracted on the directive level.
        Parameters:
        segment - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathPrefix

        public Route pathPrefix​(java.util.function.Function<java.lang.String,​Route> inner)
      • pathPrefix

        public Route pathPrefix​(PathMatcher0 p,
                                java.util.function.Supplier<Route> inner)
        Applies the given PathMatcher0 to the remaining unmatched path after consuming a leading slash. The matcher has to match a prefix of the remaining path. If matched the value extracted by the PathMatcher is extracted on the directive level.
        Parameters:
        p - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathPrefix

        public <T> Route pathPrefix​(PathMatcher1<T> p,
                                    java.util.function.Function<T,​Route> inner)
      • pathPrefix

        public <T1,​T2> Route pathPrefix​(PathMatcher2<T1,​T2> p,
                                              java.util.function.BiFunction<T1,​T2,​Route> inner)
      • pathPrefix

        public <T> Route pathPrefix​(Unmarshaller<java.lang.String,​T> t,
                                    java.util.function.Function<T,​Route> inner)
        Consumes a leading slash and extracts the next path segment, unmarshalling it and passing the result to the inner function.
        Parameters:
        t - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathPrefixTest

        public Route pathPrefixTest​(java.lang.String segment,
                                    java.util.function.Supplier<Route> inner)
        Checks whether the unmatchedPath of the RequestContext has a prefix matched by the given PathMatcher. In analogy to the pathPrefix directive a leading slash is implied.
        Parameters:
        segment - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathPrefixTest

        public Route pathPrefixTest​(PathMatcher0 pm,
                                    java.util.function.Supplier<Route> inner)
      • pathPrefixTest

        public <T1> Route pathPrefixTest​(PathMatcher1<T1> pm,
                                         java.util.function.Function<T1,​Route> inner)
      • pathPrefixTest

        public <T1,​T2> Route pathPrefixTest​(PathMatcher2<T1,​T2> pm,
                                                  java.util.function.BiFunction<T1,​T2,​Route> inner)
      • pathSingleSlash

        public Route pathSingleSlash​(java.util.function.Supplier<Route> inner)
        Only passes on the request to its inner route if the request path consists of exactly one remaining slash.
        Parameters:
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathSuffix

        public Route pathSuffix​(java.lang.String segment,
                                java.util.function.Supplier<Route> inner)
        Applies the given PathMatcher to a suffix of the remaining unmatchedPath of the RequestContext. If matched the value extracted by the PathMatcher0 is extracted and the matched parts of the path are consumed. Note that, for efficiency reasons, the given PathMatcher0 must match the desired suffix in reversed-segment order, i.e. pathSuffix("baz" / "bar") would match /foo/bar/baz!
        Parameters:
        segment - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathSuffix

        public <T1> Route pathSuffix​(PathMatcher1<T1> pm,
                                     java.util.function.Function<T1,​Route> inner)
      • pathSuffix

        public <T1,​T2> Route pathSuffix​(PathMatcher2<T1,​T2> pm,
                                              java.util.function.BiFunction<T1,​T2,​Route> inner)
      • pathSuffixTest

        public Route pathSuffixTest​(java.lang.String segment,
                                    java.util.function.Supplier<Route> inner)
        Checks whether the unmatchedPath of the RequestContext has a suffix matched by the given PathMatcher. However, as opposed to the pathSuffix directive the matched path is not actually "consumed". Note that, for efficiency reasons, the given PathMatcher must match the desired suffix in reversed-segment order, i.e. pathSuffixTest("baz" / "bar") would match /foo/bar/baz!
        Parameters:
        segment - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • pathSuffixTest

        public Route pathSuffixTest​(PathMatcher0 pm,
                                    java.util.function.Supplier<Route> inner)
      • pathSuffixTest

        public <T1> Route pathSuffixTest​(PathMatcher1<T1> pm,
                                         java.util.function.Function<T1,​Route> inner)
      • pathSuffixTest

        public <T1,​T2> Route pathSuffixTest​(PathMatcher2<T1,​T2> pm,
                                                  java.util.function.BiFunction<T1,​T2,​Route> inner)
      • rawPathPrefix

        public Route rawPathPrefix​(java.lang.String segment,
                                   java.util.function.Supplier<Route> inner)
        Applies the given matcher directly to a prefix of the unmatched path of the RequestContext (i.e. without implicitly consuming a leading slash). The matcher has to match a prefix of the remaining path. If matched the value extracted by the PathMatcher is extracted on the directive level.
        Parameters:
        segment - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • rawPathPrefix

        public <T1> Route rawPathPrefix​(PathMatcher1<T1> pm,
                                        java.util.function.Function<T1,​Route> inner)
      • rawPathPrefix

        public <T1,​T2> Route rawPathPrefix​(PathMatcher2<T1,​T2> pm,
                                                 java.util.function.BiFunction<T1,​T2,​Route> inner)
      • rawPathPrefixTest

        public Route rawPathPrefixTest​(java.lang.String segment,
                                       java.util.function.Supplier<Route> inner)
        Checks whether the unmatchedPath of the RequestContext has a prefix matched by the given PathMatcher. However, as opposed to the pathPrefix directive the matched path is not actually "consumed".
        Parameters:
        segment - (undocumented)
        inner - (undocumented)
        Returns:
        (undocumented)
      • rawPathPrefixTest

        public Route rawPathPrefixTest​(PathMatcher0 pm,
                                       java.util.function.Supplier<Route> inner)
      • rawPathPrefixTest

        public <T1> Route rawPathPrefixTest​(PathMatcher1<T1> pm,
                                            java.util.function.Function<T1,​Route> inner)
      • rawPathPrefixTest

        public <T1,​T2> Route rawPathPrefixTest​(PathMatcher2<T1,​T2> pm,
                                                     java.util.function.BiFunction<T1,​T2,​Route> inner)
      • redirectToNoTrailingSlashIfPresent

        public Route redirectToNoTrailingSlashIfPresent​(StatusCode redirectionType,
                                                        java.util.function.Supplier<Route> inner)
        If the request path ends with a slash, redirect to the same uri without trailing slash in the path.

        '''Caveat''': pathSingleSlash(java.util.function.Supplier<akka.http.javadsl.server.Route>) directive will not match inside of this directive.

        Parameters:
        redirectionType - A status code from StatusCodes, which must be a redirection type.
        inner - (undocumented)
        Returns:
        (undocumented)