认证方式

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

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

年份规则

  • year 为可选参数,不传时默认使用当前最新年份。
  • 数据年份: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- 前缀与小写字母数字编码,服务端按大小写不敏感处理。
GET /api/journals/j-3f9k2mqa
curl -X GET -H "Authorization: Bearer YOUR_API_KEY" "https://webapi.xr-scholar.com/api/journals/j-3f9k2mqa?year=2026"
import requests

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

resp = requests.get(url, headers=headers, params=params, 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?year=2026"))
    .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?year=2026",
  {
    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?year=2026";
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/",
  "researcharea": [
    {
      "code": "A001",
      "name": "Multidisciplinary",
      "nameZh": "综合性期刊",
      "tier": 1,
      "top": true
    }
  ],
  "jcrcategory": [
    {
      "code": "B002",
      "name": "Multidisciplinary Sciences",
      "nameZh": "多学科科学",
      "tier": 1
    }
  ]
}

调用建议

  1. 如果用户先输入刊名,优先调用“期刊搜索接口”。
  2. 选中某个结果后,使用返回的 jid 调用“期刊详情接口”。