Sometimes you need the ability to handle REST API calls with empty parameters. For instance we have following REST API:
@RequestMapping(value = "/getJsonFile")
public String getJsonFile(@RequestParam("instanceType") String instanceType,
@RequestParam("repositoryBucket") String repositoryBucket,
@RequestParam("ec2HostName") String ec2HostName,
@RequestParam("metaData") String metaData) {
// your code ...
return jsonFile;
}
So client requests this REST API by following URL:
http://10.0.61.117:8080/getJsonFile?instanceType=APP&repositoryBucket=my-repo&ec2HostName=codeflex&metaData=true
But what if some clients don’t need the last parameter – metaData? So they calling for this URL:
http://10.0.61.117:8080/getJsonFile?instanceType=APP&repositoryBucket=my-repo&ec2HostName=codeflex
Now we have to specify on our server side that metaData parameter is optional.
Here how you do it:
@RequestMapping(value = "/getJsonFile")
public String getJsonFile(@RequestParam("instanceType") String instanceType,
@RequestParam("repositoryBucket") String repositoryBucket,
@RequestParam("ec2HostName") String ec2HostName,
@RequestParam(value = "metaData", required = false) String metaData) {
// your code ...
return jsonFile;
}
Alternative approach is to use Java 8 Optional keyword, then you don’t even need to specify required = false
@RequestMapping(value = "/getJsonFile")
public String getJsonFile(@RequestParam("instanceType") String instanceType,
@RequestParam("repositoryBucket") String repositoryBucket,
@RequestParam("ec2HostName") String ec2HostName,
@RequestParam("metaData") Optional<String> metaData) {
// your code ...
return jsonFile;
}










[…] La lectura de este artículo: codeflex.co/… […]
“getJsonFile” endpoint ? Is it really RESTfull?
[…] Leggi questo articolo: codeflex.co/… […]