/* * Copyright © 2012 The Feign Authors (feign@commonhaus.dev) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package feign; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Retention; /** * Expands the uri template supplied in the {@code value}, permitting path and query variables, or * just the http method. Templates should conform to RFC 6570. Support is limited to Simple String * expansion and Reserved Expansion (Level 1 and Level 2) expressions. */ @java.lang.annotation.Target(METHOD) @Retention(RUNTIME) public @interface RequestLine { /** * The HTTP request line, including the method and an optional URI template. * *
The string must begin with a valid {@linkplain feign.Request.HttpMethod HTTP method name} * (e.g. {@linkplain feign.Request.HttpMethod#GET GET}, {@linkplain feign.Request.HttpMethod#POST * POST}, {@linkplain feign.Request.HttpMethod#PUT PUT}), followed by a space and a URI template. * If only the HTTP method is specified (e.g. {@code "DELETE"}), the request will use the base URL * defined for the client. * *
Example: * *
{@code @RequestLine("GET /repos/{owner}/{repo}")
* Repo getRepo(@Param("owner") String owner, @Param("repo") String repo);
* }
*
* @return the HTTP method and optional URI template for the request.
* @see feign.template.UriTemplate
*/
String value();
/**
* Controls whether percent-encoded forward slashes ({@code %2F}) in expanded path variables are
* decoded back to {@code '/'} before sending the request.
*
* When {@code true} (the default), any {@code %2F} sequences produced during URI template * expansion will be replaced with literal slashes, meaning that path variables containing slashes * will be interpreted as multiple path segments. * *
When {@code false}, percent-encoded slashes ({@code %2F}) are preserved in the final URL. * This is useful when a path variable intentionally includes a slash as part of its value (for * example, an encoded identifier such as {@code "foo%2Fbar"}). * *
Example: * *
{@code @RequestLine(value = "GET /projects/{id}", decodeSlash = false)
* Project getProject(@Param("id") String encodedId);
* }
*
* @return {@code true} if encoded slashes should be decoded (default behavior); {@code false} to
* preserve {@code %2F} sequences in the URL.
*/
boolean decodeSlash() default true;
/**
* Specifies how collections (e.g. {@link java.util.List List} or arrays) are serialized when
* expanded into the URI template.
*
* Determines whether values are represented as exploded parameters (repeated keys) or as a * single comma-separated value, depending on the chosen {@link feign.CollectionFormat}. * *
Example: * *