#node.js #json #api #axios
#node.js #json #API #axios
Вопрос:
Я использовал api с curl следующим образом: 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'
.
.
.
Комментарии:
1. Согласно документу axios, измените на
responseType: 'json'
.2. Пробовал это изначально, но безуспешно -_-. спасибо
3. Вам нужно перейти к документу для сайта и посмотреть, что именно вам нужно передать, чтобы он отправил вам обратно JSON. И вы также можете сравнить ТОЧНЫЕ запросы, отправленные как из вашего curl, так и из вашего Javascript, и посмотреть, чем отличаются эти два запроса.
4. Спасибо, я вернулся и посмотрел, и оказалось, что требуется указать тип в URL. еще раз спасибо!!