Feign @RequestParam vs Controller @RequestParam: Same Annotation, Different Direction
While learning Feign Client in Spring Boot microservices, I noticed something confusing.
Feign @RequestParam vs Controller @RequestParam: Same Annotation, Different Direction
While learning Feign Client in Spring Boot microservices, I noticed something confusing.
We use @RequestParam in normal controllers. We also use @RequestParam in Feign clients.
The annotation looks the same, but the purpose is different.
In a controller, @RequestParam reads data from an incoming HTTP request.
@GetMapping("/users")
public User getUser(@RequestParam String email) {
return userService.findByEmail(email);
}
Example:
GET /users?email=test@gmail.com
In a Feign client, @RequestParam creates a query parameter for an outgoing HTTP request.
@FeignClient(name = "USER-SERVICE")
public interface UserClient {
@GetMapping("/users")
User getUser(@RequestParam String email);
}
When we call:
userClient.getUser("test@gmail.com");
Feign creates:
GET /users?email=test@gmail.com
Controller:
Client / Browser → User Service
Feign:
Order Service → User Service

Same annotation, different direction: Controllers read query params while Feign Clients create them.
The annotation is the same, but the role changes based on where we use it.
In controllers, it receives data. In Feign clients, it sends data.
This small difference helped me understand Feign Client more clearly. Feign is not doing magic — it is simply building HTTP requests from Java interfaces.
메타데이터
- post_id
- adc952506fea
- slug
- feign-requestparam-vs-controller-requestparam-same-annotation-different-direction-adc952506fea
- url
- https://medium.com/@vinojinip76/feign-requestparam-vs-controller-requestparam-same-annotation-different-direction-adc952506fea
- canonical_url
- https://medium.com/@vinojinip76/feign-requestparam-vs-controller-requestparam-same-annotation-different-direction-adc952506fea
- author_url
- https://medium.com/@vinojinip76
- status
- ok
- fetched_at
- 2026-07-10 15:20:15