使用JSON作为HTTP GET输入参数是有效的RESTful服务吗?

使用JSON作为HTTP GET输入参数是有效的RESTful服务吗?,rest,http,get,Rest,Http,Get,我有以下后端API: 端点 HTTP获取 查询参数 ?输入 范例 最后一个HTTP GET调用是 {上述JSON} 由于后端需求的不断变化,上述JSON结构通过添加新的键:值对而不断增加。此JSON结构也是对数据库的查询 阻碍 由于使用weblinks作为值,因此有必要使用encodeURIComponent函数来成功调用REST。这意味着,引号、正向斜杠等需要进行编码才能获得回复。当需要使用Postman或其他REST客户机在独立的基础上进行测试时,这将变得非常乏味 我没有看到像上面提到的那样

我有以下后端API:

端点 HTTP获取

查询参数 ?输入

范例

最后一个HTTP GET调用是

{上述JSON}

由于后端需求的不断变化,上述JSON结构通过添加新的键:值对而不断增加。此JSON结构也是对数据库的查询

阻碍 由于使用weblinks作为值,因此有必要使用encodeURIComponent函数来成功调用REST。这意味着,引号、正向斜杠等需要进行编码才能获得回复。当需要使用Postman或其他REST客户机在独立的基础上进行测试时,这将变得非常乏味


我没有看到像上面提到的那样将JSON结构传递给API,因此我希望确认在进行此类RESTful调用时使用大量参数的最佳做法和/或正确方法。我通常认为通过POST获取某些内容是一种不好的做法

然而,听起来GET中的body并不是被禁止的东西,而是框架中没有广泛实现的东西

在您的情况下,这将取决于您有多少属性以及全局长度或json

如果您继续使用GET方法,那么使用JSON的分解键值表示应该是一种方法

例如: {myKey:myValue,childObjKey:{childObjProp:childValue} 可能成为 ?myKey=myValue&childObjKey.childObjProp=childValue

但是查询参数的长度有一些限制,可以在客户端和/或服务器中实现。 如果您的参数数量庞大,并且值的长度是不可预测的文本,例如没有长度限制,那么使用POST应该是一种方法。

当用户从UI中选择一个参数时,这里有一个示例。它已被编码,因此有点难看。一旦参数增加,我想HTTP Post将是一个更好的选择
https://localhost:8443/getSomeParameterInfo
{
  'url': 'http://semanticstuff.org/blah#Parameter,
  'parameters_1': 'value1',
  'someArray': [
     'http://semanticstuff.org/blah#something1,
     'http://semanticstuff.org/blah#something2
  ],
  'someOtherArray': [
     'http://....'
  ]
}