You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Axios为Scripture API设置指定请求头,无法获取纯文本经文

问题:Axios请求Scripture Bible API无法获取纯文本经文

我使用以下Axios代码调用Scripture Bible API获取经文:

import axios from 'axios';

const API = axios.create({ baseURL: 'https://api.scripture.api.bible' });

API.defaults.headers.common['api-key'] = 'MY_API_KEY';
API.defaults.headers.get['content-type'] = 'text';
API.defaults.headers.get['include-titles'] = false;
API.defaults.headers.get['include-verse-numbers'] = false;

export const getEnglishVerse = (verseId) => API.get(`/v1/bibles/65eec8e0b60e656b-01/verses/${verseId}`);
export const getItalianVerse = (verseId) => API.get(`/v1/bibles/41f25b97f468e10b-01/verses/${verseId}`);

但最后三个配置的"请求头"并未生效,返回的仍是HTML格式的内容:

<p class="p"><span data-number="16" data-sid="JHN 3:16" class="v">16</span>Perciocchè Iddio ha tanto amato il mondo, ch'egli ha dato il suo unigenito Figliuolo, acciocchè chiunque crede in lui non perisca, ma abbia vita eterna. </p>

我需要获取纯文本格式的经文,且在Swagger中设置对应参数时可以正常生效,请问该如何正确配置?


解决方案

核心问题

你搞错了参数类型:content-type、include-titles、include-verse-numbers不是请求头参数,而是URL查询参数。这就是为什么Swagger里设置有效(Swagger会自动识别这类参数并拼到URL上),但放在Axios的headers.get里完全没用。

正确写法

把这些参数移到get请求的params选项中:

import axios from 'axios';

// 创建实例时只配置必要的请求头
const API = axios.create({ 
  baseURL: 'https://api.scripture.api.bible',
  headers: {
    'api-key': 'MY_API_KEY'
  }
});

// 每个请求携带查询参数
export const getEnglishVerse = (verseId) => API.get(`/v1/bibles/65eec8e0b60e656b-01/verses/${verseId}`, {
  params: {
    'content-type': 'text',
    'include-titles': false,
    'include-verse-numbers': false
  }
});

export const getItalianVerse = (verseId) => API.get(`/v1/bibles/41f25b97f468e10b-01/verses/${verseId}`, {
  params: {
    'content-type': 'text',
    'include-titles': false,
    'include-verse-numbers': false
  }
});

全局配置优化

如果所有请求都需要这些参数,可以直接在实例创建时全局配置params,避免重复代码:

const API = axios.create({ 
  baseURL: 'https://api.scripture.api.bible',
  headers: {
    'api-key': 'MY_API_KEY'
  },
  // 全局默认查询参数
  params: {
    'content-type': 'text',
    'include-titles': false,
    'include-verse-numbers': false
  }
});

// 后续请求无需再单独传参
export const getEnglishVerse = (verseId) => API.get(`/v1/bibles/65eec8e0b60e656b-01/verses/${verseId}`);
export const getItalianVerse = (verseId) => API.get(`/v1/bibles/41f25b97f468e10b-01/verses/${verseId}`);

这样配置后,API会返回纯文本格式的经文内容,符合你的需求。


内容的提问来源于stack exchange,提问作者mathdx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:35:15