【问题标题】:Sending GET request with parameters represented as object (axios,fetch)?发送带有表示为对象(axios,fetch)的参数的GET请求?
【发布时间】:2021-04-19 08:57:54
【问题描述】:

我有这样的参数。其中一些表示为对象(例如“变量”是对象),那么我如何发送带有这些参数的 GET 请求?

{"operationName":"getPostList","variables":{"input":{"type":"post","locale":"en","projectId":"1"}},"query":"query getPostList($input: PostSearchType) {\n  posts(input: $input, paging: {limit: 12}) {\n    items {\n      id\n    type\n   locale\n  shortDescription\n fullUrl\n   thumbnail\n   tags\n      title\n      publishedAt\n      __typename\n    }\n    __typename\n  }\n}\n"}

【问题讨论】:

  • 随你喜欢……但很大程度上取决于服务器上的解析器希望你呈现嵌套数据的方式。查询字符串标准仅描述 key=value 对。
  • 服务器在 Node.js 上,所以我应该列出它们?

标签: javascript ajax https axios fetch


【解决方案1】:

起初我认为这很简单,只需将它们添加为正文即可。但事实证明你不能将正文添加到 GET 请求中。 axios github page says:

data是要作为请求体发送的数据 仅适用于请求方法“PUT”、“POST”、“DELETE”和“PATCH”

你只能添加参数,但是:

params 是与请求一起发送的 URL 参数 必须是普通对象或 URLSearchParams 对象

但是有一些东西可以拯救你:paramsSerializer

paramsSerializer 是一个可选函数,负责序列化params (例如https://www.npmjs.com/package/qshttp://api.jquery.com/jquery.param/

例如

paramsSerializer: function (params) {
    return Qs.stringify(params, {arrayFormat: 'brackets'})
}

从现在开始,您只需要弄清楚如何序列化您的参数 - 如果不知道接收系统希望它们如何格式化,我将无能为力。

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 2020-11-16
    • 2018-04-13
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 2018-04-05
    相关资源
    最近更新 更多