[ PROMPT_NODE_27062 ]
Pubmed Database API 参考
[ SKILL_DOCUMENTATION ]
# PubMed E-utilities API 参考
## 概述
NCBI E-utilities 通过 REST API 提供对 PubMed 和其他 Entrez 数据库的编程访问。所有 E-utilities 的基础 URL 为:
https://eutils.ncbi.nlm.nih.gov/entrez/eutils/
## API 密钥要求
自 2018 年 12 月 1 日起,NCBI 强制要求 E-utility 调用使用 API 密钥。API 密钥将速率限制从每秒 3 次请求提高到每秒 10 次。要获取 API 密钥,请注册 NCBI 账户并在账户设置中生成密钥。
在请求中使用 `&api_key` 参数包含 API 密钥:
esearch.fcgi?db=pubmed&term=cancer&api_key=YOUR_API_KEY
## 速率限制
- **无 API 密钥**:每秒 3 次请求
- **有 API 密钥**:每秒 10 次请求
- 请求中始终包含 User-Agent 标头
## 核心 E-utility 工具
### 1. ESearch - 查询数据库
**端点**:`esearch.fcgi`
**目的**:搜索 Entrez 数据库并检索 UID 列表(例如 PubMed 的 PMID)
**必需参数**:
- `db` - 要搜索的数据库(例如 pubmed, gene, protein)
- `term` - 搜索查询
**可选参数**:
- `retmax` - 返回的最大记录数(默认:20,最大:10000)
- `retstart` - 返回的第一条记录的索引(默认:0)
- `usehistory=y` - 将结果存储在历史服务器上以处理大数据集
- `retmode` - 返回格式 (xml, json)
- `sort` - 排序顺序 (relevance, pub_date, first_author, last_author, journal)
- `field` - 将搜索限制在特定字段
- `datetype` - 用于过滤的日期类型 (pdat 为出版日期)
- `mindate` - 最小日期 (YYYY/MM/DD 格式)
- `maxdate` - 最大日期 (YYYY/MM/DD 格式)
**请求示例**:
esearch.fcgi?db=pubmed&term=breast+cancer&retmax=100&retmode=json&api_key=YOUR_API_KEY
**响应元素**:
- `Count` - 匹配查询的记录总数
- `RetMax` - 此响应中返回的记录数
- `RetStart` - 返回的第一条记录的索引
- `IdList` - UID (PMID) 列表
- `WebEnv` - 历史服务器环境字符串 (当 usehistory=y 时)
- `QueryKey` - 历史服务器的查询键 (当 usehistory=y 时)
### 2. EFetch - 下载记录
**端点**:`efetch.fcgi`
**目的**:以各种格式从数据库检索完整记录
**必需参数**:
- `db` - 数据库名称
- `id` - 以逗号分隔的 UID 列表,或使用 ESearch 中的 WebEnv/query_key
**可选参数**:
- `rettype` - 记录类型 (abstract, medline, xml, uilist)
- `retmode` - 返回模式 (text, xml)
- `ret