You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+68-33Lines changed: 68 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,10 +26,10 @@ This is a map with current key features provided by feign:
26
26

27
27
28
28
# Roadmap
29
-
## Feign 11 and beyond
29
+
## Feign 11 and beyond
30
30
Making _API_ clients easier
31
31
32
-
Short Term - What we're working on now. ⏰
32
+
Short Term - What we're working on now. ⏰
33
33
---
34
34
* Response Caching
35
35
* Support caching of api responses. Allow for users to define under what conditions a response is eligible for caching and what type of caching mechanism should be used.
@@ -42,22 +42,20 @@ Short Term - What we're working on now. ⏰
42
42
*`Retry` API refactor
43
43
* Refactor the `Retry` API to support user-supplied conditions and better control over back-off policies. **This may result in non-backward-compatible breaking changes**
44
44
45
-
Medium Term - What's up next. ⏲
45
+
Medium Term - What's up next. ⏲
46
46
---
47
-
* Metric API
48
-
* Provide a first-class Metrics API that users can tap into to gain insight into the request/response lifecycle. Possibly provide better [OpenTracing](https://opentracing.io/) support.
49
47
* Async execution support via `CompletableFuture`
50
48
* Allow for `Future` chaining and executor management for the request/response lifecycle. **Implementation will require non-backward-compatible breaking changes**. However this feature is required before Reactive execution can be considered.
51
49
* Reactive execution support via [Reactive Streams](https://www.reactive-streams.org/)
52
50
* For JDK 9+, consider a native implementation that uses `java.util.concurrent.Flow`.
53
51
* Support for [Project Reactor](https://projectreactor.io/) and [RxJava 2+](https://github.com/ReactiveX/RxJava) implementations on JDK 8.
54
52
55
-
Long Term - The future ☁️
53
+
Long Term - The future ☁️
56
54
---
57
55
* Additional Circuit Breaker Support.
58
56
* Support additional Circuit Breaker implementations like [Resilience4J](https://resilience4j.readme.io/) and Spring Circuit Breaker
59
57
60
-
---
58
+
---
61
59
62
60
### Basics
63
61
@@ -91,7 +89,7 @@ public class MyApp {
91
89
GitHub github =Feign.builder()
92
90
.decoder(newGsonDecoder())
93
91
.target(GitHub.class, "https://api.github.com");
94
-
92
+
95
93
// Fetch and print a list of the contributors to this library.
Feign `Expressions` represent SimpleStringExpressions (Level1) as defined by [URITemplate-RFC6570](https://tools.ietf.org/html/rfc6570). `Expressions` are expanded using
134
-
their corresponding `Param` annotated method parameters.
132
+
their corresponding `Param` annotated method parameters.
/* The owner and repository parameters will be used to expand the owner and repo expressions
157
155
* defined in the RequestLine.
158
-
*
156
+
*
159
157
* the resulting uri will be https://api.github.com/repos/OpenFeign/feign/contributors
160
158
*/
161
159
github.contributors("OpenFeign", "feign");
@@ -222,8 +220,8 @@ http://localhost:8080/test
222
220
See [AdvancedUsage](#advanced-usage) for more examples.
223
221
224
222
>**What about slashes? `/`**
225
-
>
226
-
>@RequestLine templates do not encode slash `/` characters by default. To change this behavior, set the `decodeSlash` property on the `@RequestLine` to `false`.
223
+
>
224
+
>@RequestLine templates do not encode slash `/` characters by default. To change this behavior, set the `decodeSlash` property on the `@RequestLine` to `false`.
227
225
228
226
>**What about plus? `+`**
229
227
>
@@ -232,7 +230,7 @@ See [Advanced Usage](#advanced-usage) for more examples.
232
230
> `+` symbol should not represent a space and is explicitly encoded as `%2B` when found on a query string.
233
231
>
234
232
>If you wish to use `+` as a space, then use the literal ` ` character or encode the value directly as `%20`
235
-
233
+
236
234
##### CustomExpansion
237
235
238
236
The `@Param` annotation has an optional property `expander` allowing for complete control over the individual parameter's expansion.
@@ -246,17 +244,17 @@ public interface Expander {
246
244
The result of this method adheres to the same rules stated above. If the result is `null` or an empty string,
247
245
the value is omitted. If the value is not pct-encoded, it will be. See [Custom @Param Expansion](#custom-param-expansion) for more examples.
248
246
249
-
#### Request Headers Expansion
247
+
#### Request Headers Expansion
250
248
251
-
`Headers` and `HeaderMap` templates follow the same rules as [Request Parameter Expansion](#request-parameter-expansion)
249
+
`Headers` and `HeaderMap` templates follow the same rules as [Request Parameter Expansion](#request-parameter-expansion)
252
250
with the following alterations:
253
251
254
252
* Unresolved expressions are omitted. If the result is an empty header value, the entire header is removed.
255
253
* No pct-encoding is performed.
256
254
257
255
See [Headers](#headers) for examples.
258
256
259
-
> **A Note on `@Param` parameters and their names**:
257
+
> **A Note on `@Param` parameters and their names**:
260
258
>
261
259
> All expressions with the same name, regardless of their position on the `@RequestLine`, `@QueryMap`, `@BodyTemplate`, or `@Headers` will resolve to the same value.
262
260
> In the following example, the value of `contentType`, will be used to resolve both the header and path expression:
@@ -268,12 +266,12 @@ See [Headers](#headers) for examples.
0 commit comments