我正在设计REST API我的一个资源就是从用户端获取一些基本数据。
以下是我需要提及的两点:
所以我认为在服务器端有一长串参数可能不是那么好,我想用一个接受JSON的参数替换这部分。
你认为这样做是否正确?
答案 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#并内置了微软的序列化库,但如果没有,你仍然可以使用相同的基本思想来做你想做的事。