1. Overview
While creating Swagger documentation, we often need to hide endpoints from being exposed to end-users. The most common scenario to do so is when an endpoint is not ready yet. Also, we could have some private endpoints which we don't want to expose.
In this short article, we'll have a look at how we can hide endpoints from Swagger API documentation. To achieve this, we'll be using annotations in our controller class.
2. Hiding an Endpoint with @ApiIgnore
The @ApiIgnore annotation allows us to hide an endpoint. Let's add this annotation for an endpoint in our controller:
@ApiIgnore
@ApiOperation(value = "This method is used to get the author name.")
@GetMapping("/getAuthor")
public String getAuthor() {
return "Umang Budhwar";
}
3. Hiding an Endpoint with @ApiOperation
Alternatively, we can use @ApiOperation to hide a single endpoint:
@ApiOperation(value = "This method is used to get the current date.", hidden = true)
@GetMapping("/getDate")
public LocalDate getDate() {
return LocalDate.now();
}
Notice that we need to set the hidden property to true to make Swagger ignore this endpoint.
4. Hiding all Endpoints with @ApiIgnore
Nonetheless, sometimes we need to hide all the endpoints of a controller class. We can achieve this by annotating the controller class with @ApiIgnore:
@ApiIgnore
@RestController
public class RegularRestController {
// regular code
}
It is to be noted that this will hide the controller itself from the documentation.
5. Conclusion
In this tutorial, we've seen how we can hide the endpoints from Swagger documentation. We discussed how to hide a single endpoint and also all the endpoints of a controller class.
As always, the complete code for this example is available over on GitHub.
The post Hiding Endpoints From Swagger Documentation in Spring Boot first appeared on Baeldung.