Douglas
Douglas

Reputation: 3

How to make a controller to get a URL with HashMap?

I need to make a controller in Spring Boot 2.0 to get correctly an URL like this:

https://localhost:8443/my_generate_signature?data%5Btimestamp%5D=1570074358&data%5Bsource%5D=uw

This URL is being called by an AJAX requisition:

<script type="text/javascript">
var generateSignature = 
function(callback, params_to_sign){
$.ajax({
url     : "/my_generate_signature",
type    : "GET",
dataType: "text",
data    : { data: params_to_sign},
complete: function() {console.log("complete")},
success : function(signature, textStatus, xhr) { callback(signature); },
error   : function(xhr, status, error) { console.log(xhr, status, error); }
});
}
</script>
<script type="text/javascript">  
  $('#upload_widget_opener').cloudinary_upload_widget({ 
    cloudName: cloudName, apiKey: api_key,
    cropping: true, uploadSignature: generateSignature}, (error, result) => { });
</script>

For reference, I'm trying to implement this:

https://cloudinary.com/documentation/upload_widget#create_upload_widget_methods

I've tried a controller like this but I get HttpStatus 400:

@RequestMapping(value="/my_generate_signature")
@ResponseBody
public String generateSignature(@RequestParam(value="params_to_sign", required=true) Map<String, Object> paramsToSign) {

return 'test';
}

Upvotes: 0

Views: 311

Answers (2)

Himanshu
Himanshu

Reputation: 164

you can also use a post request and use request body. @PostMapping @ResponseBody public String generateSignature(@RequestBody Map> paramsToSign) { return "...."; }

In case of get request, you can go with @GetMapping and @RequestParam annotation.

Upvotes: 1

LHCHIN
LHCHIN

Reputation: 4009

If you want to save all request parameters into a Map, you don't need to identify the value for @RequestParam. Just modify your method generateSignature as follows:

public String generateSignature(@RequestParam Map<String, Object> paramsToSign) {
    return 'test';
}

Upvotes: 0

Related Questions