如何获取 fetch api 的字符串响应并将其分配给变量?

Posted

技术标签:

【中文标题】如何获取 fetch api 的字符串响应并将其分配给变量?【英文标题】:How to get string response of fetch api and assign it to a variable? 【发布时间】:2020-11-17 21:21:23 【问题描述】:

我正在使用 fetchApi 向后端发送请求,响应仅作为字符串(不在 json 正文中)出现

这是我的前端代码:

        async decryptText() 
    let response = await this.getDecryptedText(this.entry.text, this.user.userId)
    if(response)
        console.log(response)
    
   
        
async getDecryptedText(inputText: string, userId: number) 
    let url = "http://localhost:8080/getDecryptedText?textToDecrypt=" + inputText + "&userId=" + userId;
    return fetch(url);
  

但我无法像其他 json 响应那样解析响应,因为它只是一个字符串。

当我将它打印到控制台时,输出是这样的:

我只想打印到控制台响应字符串

如何获取字符串响应并将其分配给变量?

我已经按照答案编辑了代码。

【问题讨论】:

如果不是 JSON 就不要调用response.json() 另外getDecryptedText() 没有声明为async 所以你不能await 它。 如果你使用 Angular,你也可以试试HttpClient。它的用途更广泛。 我已经编辑了代码和输出。我仍然无法将其打印到控制台 【参考方案1】:

await 表示等到 promise 解决。所以你不应该使用.then 回调函数。应该是,

async decryptText() 
     let response = await this.getDecryptedText(this.entry.text, this.user.userId)

     // promise is resolved here with success or failure

     if(response)
         console.log(response)   // you should get result here
     

【讨论】:

我已经编辑了代码和输出。我仍然无法将其打印到控制台 cosonole.log(response) 打印什么?【参考方案2】:

希望对你有帮助:

  decryptText() 
   this.getDecryptedText(this.entry.text, this.user.userId)
     .then(response => response.json())
     .then(response => 
     console.log(response)
     )
   
getDecryptedText(inputText, userId) 
 let url = "http://localhost:8080/getDecryptedText?textToDecrypt=" + inputText + "&userId=" + userId;
        return fetch(url);
  

【讨论】:

未捕获(承诺中):SyntaxError:JSON 中位置 0 的意外标记 a SyntaxError:JSON 中位置 0 的意外标记 a【参考方案3】:

尝试打印

console.log(response.body)  

因为,你的反应是有理有据的。

【讨论】:

不起作用:(它将整个身体打印为可读流 在一些 api 测试平台(如 postman)上检查您的 api,并向我们展示结果。 我希望这能解决你的问题***.com/a/40403285/8129656

以上是关于如何获取 fetch api 的字符串响应并将其分配给变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Fetch 的承诺链之外获取响应数据? [复制]

使用 fetch、cors 时如何从 json API 获取属性?

我如何使用 fetch API 并在状态下存储响应?

如何从“await fetch()”解析 Promise?

Fetch API 从响应中获取原始值

React-native fetch Api 获取响应不同于调试模式和普通模式