使用Axios格式化查询参数

v7pvogib  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(176)

根据Xero API文件:
|字段|说明|
| - -|- -|
|记录筛选器| 您可以通过将值附加到端点来指定单个记录,即GET https://.../Invoices/{identifier} InvoiceID -发票的Xero标识符,例如297 c2 dc 5-cc 47 -4afd-8 ec 8 - 74990 b8761 e9 InvoiceNumber -发票编号,例如INV-01514|
|修改于之后|ModifiedAfter筛选器实际上是一个HTTP标头:' If-Modified-Since'。UTC时间戳(yyyy-mm-ddThh:mm:ss)。仅返回自该时间戳以来创建或修改的发票,例如2009-11- 12 T00:00:00|
|标识、发票号、联系人标识、状态| 按以逗号分隔的InvoicesID、InvoiceNumbers、ContactID或状态列表进行筛选。请参阅详细信息。|
| "在哪里"|使用where参数过滤。我们建议您将过滤限制为仅针对优化的元素。|
|由我的应用程序创建| 设置为true时,您将仅检索应用程序创建的发票|
|订单| 按返回的任何元素排序(请参见Order By)|
|页|当使用page参数(例如page=1)时,每次调用最多返回100个发票,并显示每个发票的行项目|
|仅摘要| 设置为true时,将返回轻量级字段,从响应中排除计算量大的字段,从而使API调用快速高效。|
我的请求是这样构造的:

const params = {
  'Statuses': 'AUTHORISED,PAID',
  'page': 1,
  'summaryOnly': false,
}
const config = {
  headers: { 'If-Modified-Since': '2015-01-01T00:00:00' }
}
instance.interceptors.request.use(request => {
  console.log('Starting Request', request)
  return request;
});
const response = await instance.get('Invoices', params, config);
const data = response.data;

...但似乎没有任何参数生效,如请求日志所示:

{
  transitional: {
    silentJSONParsing: true,
    forcedJSONParsing: true,
    clarifyTimeoutError: false
  },
  ...
  headers: AxiosHeaders {
    Authorization: 'Bearer eyJhbGciOiJSUzI1NiIsImtpZC...',
    [Symbol(defaults)]: { Accept: 'application/json, text/plain, */*' }
  },
  baseURL: 'https://api.xero.com/api.xro/2.0/',
  Statuses: 'AUTHORISED,PAID',
  page: 1,
  summaryOnly: false,
  method: 'get',
  url: 'Invoices'
}

我做错了什么?

5f0d552i

5f0d552i1#

您需要在配置对象本身中传递参数。

const url = 'https://jsonplaceholder.typicode.com/users';
axios
  .get(url, {
    params: {
      hello: 1,
    },
    headers: {
      myHeader: 123,
    },
  })

在您的情况下,可以执行以下操作:

const params = {
  'Statuses': 'AUTHORISED,PAID',
  'page': 1,
  'summaryOnly': false,
}

const config = {
  params,
  headers: { 'If-Modified-Since': '2015-01-01T00:00:00' }
}
// rest of your code

以下是文档参考

相关问题