【发布时间】: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中指定类型。再次感谢!