【问题标题】:Want to design a REST API but I have too much parameter to send , is it okay to replace them with one JSON?想设计一个 REST API 但我有太多参数要发送,可以用一个 JSON 替换它们吗?
【发布时间】:2012-08-16 09:49:02
【问题描述】:

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

这里有两点需要提一下:

  1. 用户的所有信息都需要通过一个http请求发送到服务器端
  2. 用户的信息大约有 30 个不同的字段。

所以我认为在服务器端有一个长长的参数列表并没有那么好,我想用一个接受 JSON 的参数替换这部分。

你认为这样做是否正确?

【问题讨论】:

    标签: json api rest


    【解决方案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# 并内置了来自 microsoft 的序列化库,但如果没有,您仍然可以使用相同的基本思想来做您想做的事情。

    【讨论】:

    • 重新阅读原始问题后,它会询问这样做是否正确。这是一个备受争议的话题。如果您真的是 RESTful,那么应该使用 GET 来完成仅返回数据的函数,但在这种情况下,有很多参数作为搜索过滤器发送,而在我看来,发送 JSON 对象是一个不错的选择,但仅限如果这是不可避免的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2023-04-07
    相关资源
    最近更新 更多