Vahid Hashemi
Vahid Hashemi

Reputation: 5240

Want to design a REST API but I have too much parameter to send , is it okay to replace them with one JSON?

I am designing a REST API one of my resources is all about to getting some basic data from user side.

Here are two points that I needs to mention:

  1. all the user's information needs to send to server side with only one http request
  2. the user's information is about 30 different fields.

So I think having a long list of argument in server side can not be that much good and I want to replace this part with a single argument which is accepting a JSON.

Do you think is it correct to do that?

Upvotes: 0

Views: 214

Answers (1)

sanpaco
sanpaco

Reputation: 815

Yes. You will want to change the method to a POST instead of a GET and in the request body send the JSON formatted data.

Example using C# syntax:

Assume you have a method that returns an object called ObjectList and in order to generate the list you the constructor requires an ObjectListRequest object -

public ObjectList GetObjectList(ObjectListRequest request)
{
    return new ObjectList(request)
}

Your ObjectListRequest class could contain various different parameters that the request would use -

public class ObjectListRequest
{
    public string SearchText { get; set; }
    public string CreatedBy { get; set; }
    public int SequenceStartRange { get; set; }
    public int SequenceEndRange { get; set; }
    public bool HasMetaData { get; set; }
}

Now to call this method using a POST with JSON in the body you would send the following

Method:   POST
Url:      http://your.service.com/GetObjectList
Headers:  
   Content-Type: application/json

Body:
   {
      "request":{
          "SearchText":"test text",
          "CreatedBy":"myusername",
          "SequenceStartRange":0,
          "SequenceEndRange":15,
          "HasMetaData":"true"
      }
   }

This is a specific example which assumes you are using C# and built in Serialization libraries from microsoft, but if not, you can still use the same basic idea to do what you are trying to do.

Upvotes: 1

Related Questions