cs0815
cs0815

Reputation: 17418

restful query signature in webapi

My understanding of REST is that anything that does not change state to the underlying system (e.g. query) should be a GET request. This also means that query parameters have to be put into the URI like so:

api/SomeMethod/Parameter1/{P1:double}/Parameter2/{P1:double}

or as query strings as discussed here:

REST API Best practice: How to accept list of parameter values as input

Sometimes the query may require a lengthy vector (number of x/y points). How do I overcome the length problem of URIs here? Should I just use a POST? Thanks.

Upvotes: 0

Views: 270

Answers (1)

Calebmer
Calebmer

Reputation: 2860

If the vector really is big enough to start worrying about you should really consider moving it out of the query params and represent it as a RESTful resource.

For example, create a collection at:

api/Vector

Then your API clients can POST their large vectors and then in another request refer to it by a single id number.

This reduces the size of the query length drastically, abides by REST, and allows for these vectors to be easily reused. If you are worried about storage you can expire vectors after 30 minutes or longer.

Another option is to go down the JSON-LD road which is similar except you don‘t host the vectors. You just provide an @context object and API clients will host the vector on their own server and reference it to your API by URL in a query parameter.

Upvotes: 1

Related Questions