想要设计一个REST API,但我有太多的参数要发送,是否可以用一个JSON替换它们?

时间:2012-08-16 09:49:02

标签: json api rest

我正在设计REST API我的一个资源就是从用户端获取一些基本数据。

以下是我需要提及的两点:

  1. 只需一个http请求即可将所有用户信息发送到服务器端
  2. 用户的信息大约有30个不同的字段。
  3. 所以我认为在服务器端有一长串参数可能不是那么好,我想用一个接受JSON的参数替换这部分。

    你认为这样做是否正确?

1 个答案:

答案 0 :(得分:1)

是。您需要将方法更改为POST而不是GET,并在请求正文中发送JSON格式的数据。

使用C#语法的示例:

假设您有一个返回名为ObjectList的对象的方法,并且为了生成列表,构造函数需要一个ObjectListRequest对象 -

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

您的ObjectListRequest类可以包含请求将使用的各种不同参数 -

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; }
}

现在使用主体中带有JSON的POST调用此方法,您将发送以下内容

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"
      }
   }

这是一个特定的例子,它假设你使用C#并内置了微软的序列化库,但如果没有,你仍然可以使用相同的基本思想来做你想做的事。