【问题标题】:SoftLayer API returns text instead of json?SoftLayer API 返回文本而不是 json?
【发布时间】:2021-03-23 09:06:58
【问题描述】:

我一直在使用带有 curl 的 api,如下所示: curl -X GET -g -u $SL_USER:$SL_APIKEY "https://api.softlayer.com/rest/v3.1/SoftLayer_Account/getHardware 和我曾经得到 json 响应:

{"accountId":1414807,"bareMetalInstanceFlag":0,"domain":"regtech.cloud.com","fullyQualifiedDomainName":"dal1302vsrx001.regtech.cloud.com","hardwareStatusId":5,"hostname":"dal1302vsrx001","id":1579801,"manufacturerSerialNumber":"C819UAH12CC0374","notes":"","provisionDate":"2020-02-19T17:16:02-06:00","serialNumber":"SL01HOPT","serviceProviderId":1,"serviceProviderResourceId":null,"globalIdentifier":"957011c1-126f-4cc9-9c95-b7470f05d238","hardwareFunction":{"code":"WEBSVR","description":"Web Server","id":3},"hardwareStatus":{"id":5,"status":"ACTIVE"},"networkManagementIpAddress":"10.220.221.231","primaryBackendIpAddress":"10.220.221.222","primaryIpAddress":"55.517.245.230","privateIpAddress":"10.220.221.222"}

现在,我正在尝试在 axios js 中重新实现它,默认情况下我会获取文本。我试图将响应类型显式设置为 json 但不起作用!如果你发现我在下面的代码中做错了,请帮忙:

api_endpoint="https://api.softlayer.com/rest/v3.1/SoftLayer_Account/getHardware"
axios.get(api_endpoint, {
    params:{
        resultLimit: 1
    },
    auth: {
        username: SL_USER,
        password: SL_APIKEY
    },
    responseType: 'application/json',
    timeout: 20000
})
.then((response) => {
    console.log(response.data)
})
.catch(function (ex) {
    console.log("There was an error obtaining the product id")
    console.log(ex)
})

这是我从 axios 代码中得到的格式:

META_PROPERTIES='ACCOUNT_ID BARE_METAL_INSTANCE_FLAG DOMAIN FULLY_QUALIFIED_DOMAIN_NAME HARDWARE_STATUS_ID HOSTNAME ID MANUFACTURER_SERIAL_NUMBER NOTES PROVISION_DATE SERIAL_NUMBER SERVICE_PROVIDER_ID SERVICE_PROVIDER_RESOURCE_ID GLOBAL_IDENTIFIER HARDWARE_FUNCTION HARDWARE_STATUS NETWORK_MANAGEMENT_IP_ADDRESS PRIMARY_BACKEND_IP_ADDRESS PRIMARY_IP_ADDRESS PRIVATE_IP_ADDRESS'
META_PROPERTY_TYPES='SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR SCALAR OBJECT OBJECT SCALAR SCALAR SCALAR SCALAR'

ACCOUNT_ID='1414807'
BARE_METAL_INSTANCE_FLAG='0'
DOMAIN='regtech.cloud.com'
FULLY_QUALIFIED_DOMAIN_NAME='dal1302vsrx001.regtech.cloud.com'
.
.
.

【问题讨论】:

  • 根据 axios 文档,更改为 responseType: 'json'
  • 最初尝试过,但没有运气-_-。谢谢你
  • 您需要访问该站点的文档并查看您需要传递它的确切内容,以便它会将 JSON 发回给您。而且,您还可以比较从 curl 和 Javascript 发送的 EXACT 请求,看看这两个请求之间有什么不同。
  • 谢谢,我回去看了看,结果是需要你在URL中指定类型。再次感谢!

标签: node.js json api axios


【解决方案1】:

我在网址末尾添加了 .json。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 2019-03-31
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多