Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to send an array in url request

My requirement is as follows:

I want to give actor name, start date, end date and get all the films he acted in that period.

For that reason, my service request is like this.

  http://localhost:8080/MovieDB/GetJson?name=Actor&startDate=20120101&endDate=20120505 

Now, i want to improve it. I want to give a start date, end date and more than one actor name and want to see all those actors movies in that period.

I am not sure how should my url look to support such thing.

I am writing a java based web service using spring.

Below code is to support one actor

   @RequestMapping(value = "/GetJson", method = RequestMethod.GET)      public void getJson(@RequestParam("name") String ticker, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate) {    //code to get results from db for those params.  } 

One solution i am thinking is using a % symbol to seperate actor names. For example:

 http://localhost:8080/MovieDB/GetJson?name=Actor1%Actor2%Actor3&startDate=20120101&endDate=20120505 

Now, in the controller i will parse the name string with % and get back all actors names.

Is this a good way to do this or is there a standard approach?

Thanks

like image 578
javaMan Avatar asked Aug 09 '12 18:08

javaMan


People also ask

Can we send array in URL?

We can also use urlencode() function with serialize() function to create an URL-encoded string. In the given example, first we have converted the array into its byte stream representation, which is a string using serialize() function. And then, we have created an URL-encoded string of that byte stream.

Can we pass array in URL parameter?

URLSearchParams only accepts string parameters, not arrays!

Can we pass array in query string Javascript?

We can also pass an array with tuples or a query string. With that done, we now have an instance of the URLSearchParams class. We can get the string version of this by calling toString and append this to our URL.


1 Answers

Separate with commas:

http://localhost:8080/MovieDB/GetJson?name=Actor1,Actor2,Actor3&startDate=20120101&endDate=20120505 

or:

http://localhost:8080/MovieDB/GetJson?name=Actor1&name=Actor2&name=Actor3&startDate=20120101&endDate=20120505 

or:

http://localhost:8080/MovieDB/GetJson?name[0]=Actor1&name[1]=Actor2&name[2]=Actor3&startDate=20120101&endDate=20120505 

Either way, your method signature needs to be:

@RequestMapping(value = "/GetJson", method = RequestMethod.GET)  public void getJson(@RequestParam("name") String[] ticker, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate) {    //code to get results from db for those params.  } 
like image 166
Brian Dilley Avatar answered Sep 28 '22 03:09

Brian Dilley