package feign; import java.lang.annotation.Retention; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * Expands the request-line supplied in the {@code value}, permitting path and query variables, or * just the http method. <br> * <pre> * ... * @RequestLine("POST /servers") * ... * * @RequestLine("GET /servers/{serverId}?count={count}") * void get(@Param("serverId") String serverId, @Param("count") int count); * ... * * @RequestLine("GET") * Response getNext(URI nextLink); * ... * </pre> * HTTP version suffix is optional, but permitted. There are no guarantees this version will impact * that sent by the client. <br> * <pre> * @RequestLine("POST /servers HTTP/1.1") * ... * </pre> * <br> <strong>Note:</strong> Query params do not overwrite each other. All queries with the same * name will be included in the request. <br><br><b>Relationship to JAXRS</b><br> <br> The following * two forms are identical. <br> Feign: * <pre> * @RequestLine("GET /servers/{serverId}?count={count}") * void get(@Param("serverId") String serverId, @Param("count") int count); * ... * </pre> * <br> JAX-RS: * <pre> * @GET @Path("/servers/{serverId}") * void get(@PathParam("serverId") String serverId, @QueryParam("count") int count); * ... * </pre> */ @java.lang.annotation.Target(METHOD) @Retention(RUNTIME) public @interface RequestLine { String value(); boolean decodeSlash() default true; }