Изменить возвращенный ответ - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь получить ответ с помощью ключа сеанса для использования в моем будущем запросе внутри аутентификации сеанса Zapier, однако ответ после успешной аутентификации - «ОК: hbsdakjdkaskjdfvbasdkjh».Мне нужно, чтобы hbsdakjdkaskjdfvbasdkjh был извлечен и затем сохранен как переменная ключа сеанса в приведенном ниже коде zapier cli

Я немного новичок в разборе JSON, но я думаю, что ответ на самом деле сырой ... Я пробовал Regex, ноне мог понять правильное утверждение и задавался вопросом, может ли кто-нибудь помочь мне направить меня в правильном направлении.

Параметры URL-адреса сеанса и т. д. работают, а ключ сеанса, отвечающий после OK: на самом деле правильный, и яможно использовать до конца сеанса вручную ....

 const options = {
  url: 'https://theconsole.domain.com.au/api/auth.pl',
  method: 'POST',
  headers: {
    'content-type': 'application/x-www-form-urlencoded',
    'accept': 'application/json'
  },
  params: {
    'AccountNo': bundle.authData.AccountNo,
    'UserId': bundle.authData.UserId,
    'Password': bundle.authData.Password
  },
}

return z.request(options)
  .then((response) => {
    response.throwForStatus();
    const results = z.JSON.parse(response.content);

    // You can do any parsing you need for results here before returning them


    return {
      'sessionKey': results.sessionKey
    };
  });

1 Ответ

0 голосов
/ 28 июня 2019

Круто, так что если ваш ответ не json, вы захотите удалить строку z.JSON.parse, так как это приведет к ошибке.

Что касается извлечения ключа из ответа, успех будет зависеть от знания того, что ответ всегда будет иметь определенный формат. В этом случае это звучит так, как будто это OK: somekey.

Если мы можем с уверенностью предположить, что когда-либо будет только один пробел () и он находится непосредственно перед ключом, вы можете попробовать что-то вроде:

// the rest of the code
respone.throwForStatus(); // important, assuming the server gives a non-2xx code for a bad auth
const sessionKey = response.content.split(' ')[1];
return {sessionKey}; // shorthand for {sessionKey: sessionKey}

Предполагая, что эти предположения верны, это должно сработать!

...