认证方式

所有接口均要求在 Header 中携带 ApiKey:

Authorization: Bearer YOUR_API_KEY
  • 仅接受 Bearer 方案。
  • ApiKey 必须处于启用状态,且所属机构账号已授权且未过期。
  • 缺少或无效 API 账号时返回 401
  • 接口统一返回 JSON。

年份规则

  • 最新年份取自数据库 DataYear 表(OK=1)中的最大年份。
  • 搜索接口的 year 为可选参数,不传时默认使用上述最新年份;可选范围同为 DataYear 已启用年份。
  • 详情接口仅需 jid,直接返回对应期刊记录(含该记录年份及 onHold/delist/underReview 等字段),不接受 year 参数。
  • 预警列表接口固定返回 DataYear 最新年份数据,一次性全量返回(数量较少,不分页)。
  • 数据年份:2026、2025、2024、2023、2022、2021、2020

错误返回

接口统一返回以下结构:

{
  "message": "请在 Authorization Header 中提供 Bearer ApiKey。"
}
{
  "message": "year 不在当前接口支持范围内,可用年份:2026, 2025。"
}
{
  "message": "未找到该期刊。"
}

1. 期刊搜索接口

根据标题、缩写、ISSN 或 EISSN 搜索候选期刊,请使用 JSON 请求体传参。
POST /api/journals/search
{
  "keyword": "Nature",
  "year": 2026
}
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d "{\"keyword\":\"Nature\",\"year\":2026}" "https://webapi.xr-scholar.com/api/journals/search"
import requests

url = "https://webapi.xr-scholar.com/api/journals/search"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
payload = {
    "keyword": "Nature",
    "year": 2026
}

resp = requests.post(url, headers=headers, json=payload, timeout=30)
print(resp.status_code)
print(resp.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();
String body = "{\"keyword\":\"Nature\",\"year\":2026}";

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://webapi.xr-scholar.com/api/journals/search"))
    .header("Authorization", "Bearer YOUR_API_KEY")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
const response = await fetch("https://webapi.xr-scholar.com/api/journals/search", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    keyword: "Nature",
    year: 2026
  })
});

const data = await response.json();
console.log(response.status, data);
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_API_KEY");

var payload = new
{
    keyword = "Nature",
    year = 2026
};

var content = new StringContent(
    JsonSerializer.Serialize(payload),
    Encoding.UTF8,
    "application/json");

var response = await client.PostAsync("https://webapi.xr-scholar.com/api/journals/search", content);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(body);
返回示例
[
  {
    "jid": "j-3f9k2mqa",
    "title": "Nature",
    "titleZh": null,
    "abbrTitle": "Nature",
    "issn": "0028-0836",
    "eissn": "1476-4687",
    "year": 2026,
    "type": "review/data/protocol/report/",
    "exactMatch": true
  }
]

2. 期刊详情接口

通过搜索结果中的 jid 直接获取期刊记录及其 researcharea / jcrcategory 分区,无需传入年份。
jid 采用 j- 前缀与小写字母数字编码,服务端按大小写不敏感处理。
delistdelist_reason 成对返回,delist=falsedelist_reason 为空字符串 ""
GET /api/journals/j-3f9k2mqa
curl -X GET -H "Authorization: Bearer YOUR_API_KEY" "https://webapi.xr-scholar.com/api/journals/j-3f9k2mqa"
import requests

url = "https://webapi.xr-scholar.com/api/journals/j-3f9k2mqa"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

resp = requests.get(url, headers=headers, timeout=30)
print(resp.status_code)
print(resp.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://webapi.xr-scholar.com/api/journals/j-3f9k2mqa"))
    .header("Authorization", "Bearer YOUR_API_KEY")
    .GET()
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
const response = await fetch(
  "https://webapi.xr-scholar.com/api/journals/j-3f9k2mqa",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
);

const data = await response.json();
console.log(response.status, data);
using System.Net.Http.Headers;

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_API_KEY");

var url = "https://webapi.xr-scholar.com/api/journals/j-3f9k2mqa";
var response = await client.GetAsync(url);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(body);
返回示例
{
  "jid": "j-3f9k2mqa",
  "year": 2026,
  "title": "Nature",
  "issn": "0028-0836",
  "eissn": "1476-4687",
  "type": "review/data/protocol/report/",
  "WOS": true,
  "SCIE": true,
  "SSCI": false,
  "AHCI": false,
  "ESCI": false,
  "SCOPUS": true,
  "OAJ": false,
  "onHold": false,
  "delist": false,
  "delist_reason": "",
  "underReview": false,
  "researcharea": [
    {
      "code": "A001",
      "name": "Multidisciplinary",
      "nameZh": "综合性期刊",
      "tier": 1,
      "top": true
    }
  ],
  "jcrcategory": [
    {
      "code": "B002",
      "name": "Multidisciplinary Sciences",
      "nameZh": "多学科科学",
      "tier": 1
    }
  ]
}

3. On Hold 期刊列表

返回最新年份 onHold=1 的期刊列表,字段与搜索接口一致(不含 exactMatch)。结果一次性全量返回,不分页。
GET /api/journals/on-hold
curl -X GET -H "Authorization: Bearer YOUR_API_KEY" "https://webapi.xr-scholar.com/api/journals/on-hold"
返回示例
[
  {
    "jid": "j-3f9k2mqa",
    "title": "Example Journal",
    "titleZh": null,
    "abbrTitle": "Example J",
    "issn": "1234-5678",
    "eissn": null,
    "year": 2026,
    "type": "review/"
  }
]

4. Delist 期刊列表

返回最新年份 delist=1 的期刊列表,字段与搜索接口一致(不含 exactMatch)。结果一次性全量返回,不分页。
GET /api/journals/delist
curl -X GET -H "Authorization: Bearer YOUR_API_KEY" "https://webapi.xr-scholar.com/api/journals/delist"
返回示例
[
  {
    "jid": "j-3f9k2mqa",
    "title": "Example Journal",
    "titleZh": null,
    "abbrTitle": "Example J",
    "issn": "1234-5678",
    "eissn": null,
    "year": 2026,
    "type": ""
  }
]

5. Under Review 期刊列表

返回最新年份 underReview=1 的期刊列表,字段与搜索接口一致(不含 exactMatch)。结果一次性全量返回,不分页。
GET /api/journals/under-review
curl -X GET -H "Authorization: Bearer YOUR_API_KEY" "https://webapi.xr-scholar.com/api/journals/under-review"
返回示例
[
  {
    "jid": "j-3f9k2mqa",
    "title": "Example Journal",
    "titleZh": null,
    "abbrTitle": "Example J",
    "issn": "1234-5678",
    "eissn": null,
    "year": 2026,
    "type": ""
  }
]

调用建议

  1. 如果用户先输入刊名,优先调用“期刊搜索接口”。
  2. 选中某个结果后,使用返回的 jid 调用“期刊详情接口”。
  3. 获取预警关注期刊时,可直接调用 On Hold / Delist / Under Review 列表接口,无需关键词搜索。