版本号解析与范围匹配
正常
NEW
SemVer 2.0.0 版本工具: 版本解析、版本比较、npm 风格范围匹配、排序、最大/最小满足版本、差异类型。纯本地算法,无数据库、Redis 或外部 HTTP 依赖。
协议:HTTP
格式:JSON
版本:v1.0.0日调用量:1268次
健康检查
健康检查
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
GET
http://www.shujuyu.cn/v1/api/semver/ping
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.name |
string |
- |
| data.version |
string |
- |
| data.time |
string |
- |
| data.timezone |
string |
- |
| data.endpoints |
array |
- |
| data.range_operators |
array |
- |
| data.sort_orders |
array |
- |
| data.max_modes |
array |
- |
| data.limits |
object |
- |
请求示例
返回示例
{"msg":"pong","code":0,"data":{"name":"SemVer 版本工具 API","time":"2026-11-02 09:50:00","limits":{"max_versions":100,"max_range_length":512,"max_version_length":256},"version":"1.0.0","timezone":"Asia/Shanghai","endpoints":["ping","formats","parse","compare","satisfies","sort","max_satisfying","diff"],"max_modes":["max","min"],"sort_orders":["asc","desc"],"range_operators":["=",">",">=","<","<=","^","~"]}}
支持的操作与范围语法
支持的操作与范围语法
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
GET
http://www.shujuyu.cn/v1/api/semver/formats
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.operations |
array |
- |
| data.range_operators |
array |
- |
| data.sort_orders |
array |
- |
| data.max_modes |
array |
- |
| data.range_notes |
array |
- |
| data.limits |
object |
- |
请求示例
返回示例
{"msg":"success","code":0,"data":{"limits":{"max_versions":100,"max_range_length":512,"max_version_length":256},"max_modes":["max","min"],"operations":[{"name":"parse","path":"/api/semver/parse","result":{"build":["build","5"],"version":"1.2.3-beta.1","prerelease":["beta","1"]},"example":{"version":"1.2.3-beta.1+build.5"}},{"name":"compare","path":"/api/semver/compare","result":{"diff":"major","result":-1,"relation":"lt"},"example":{"a":"1.2.3","b":"2.0.0"}}],"range_notes":["多个比较器用空格分隔表示 AND, 用 || 分隔表示 OR","^ 与 ~ 采用 npm semver 语义; 例如 ^1.2.3 等价于 >=1.2.3 <2.0.0","预发布版本只有在该组存在同 major.minor.patch 的预发布比较器时才会匹配"],"sort_orders":["asc","desc"],"range_operators":["=",">",">=","<","<=","^","~"]}}
解析版本号
解析版本号
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST
http://www.shujuyu.cn/v1/api/semver/parse
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
| version |
string |
是 |
SemVer 2.0.0 版本号 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.input |
string |
- |
| data.valid |
bool |
- |
| data.version |
string |
- |
| data.major |
string |
- |
| data.minor |
string |
- |
| data.patch |
string |
- |
| data.prerelease |
array |
- |
| data.build |
array |
- |
请求示例
返回示例
{"msg":"success","code":0,"data":{"build":["build","5"],"input":"1.2.3-beta.1+build.5","major":"1","minor":"2","patch":"3","valid":true,"version":"1.2.3-beta.1","prerelease":["beta","1"]}}
比较两个版本
按 SemVer 优先级比较版本;build metadata 不参与比较。
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST
http://www.shujuyu.cn/v1/api/semver/compare
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
| a |
string |
是 |
左版本 |
| b |
string |
是 |
右版本 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.a |
string |
- |
| data.b |
string |
- |
| data.result |
int |
- |
| data.relation |
string |
- |
| data.diff |
string |
- |
请求示例
返回示例
{"msg":"success","code":0,"data":{"a":"1.2.3","b":"2.0.0","diff":"major","result":-1,"relation":"lt"}}
版本是否满足范围
版本是否满足范围
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST
http://www.shujuyu.cn/v1/api/semver/satisfies
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
| version |
string |
是 |
待检测版本 |
| range |
string |
是 |
范围表达式 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.version |
string |
- |
| data.range |
string |
- |
| data.satisfied |
bool |
- |
| data.matched_group |
int |
- |
| data.prerelease |
bool |
- |
| data.groups |
array |
- |
请求示例
返回示例
{"msg":"success","code":0,"data":{"range":"^1.0.0","groups":[[">=1.0.0","<2.0.0"]],"version":"1.2.3","satisfied":true,"prerelease":false,"matched_group":1}}
版本排序
按 SemVer 优先级升序或降序排序;非法版本会跳过并在 invalid 中回传。
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST
http://www.shujuyu.cn/v1/api/semver/sort
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
| versions |
array\ |
否 |
- |
| order |
string |
否 |
asc 升序 / desc 降序 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.order |
string |
- |
| data.total |
int |
- |
| data.valid |
int |
- |
| data.invalid_count |
int |
- |
| data.invalid |
array |
- |
| data.sorted |
array |
- |
请求示例
返回示例
{"msg":"success","code":0,"data":{"order":"asc","total":5,"valid":4,"sorted":[{"build":[],"input":"1.0.0","major":"1","minor":"0","patch":"0","version":"1.0.0","prerelease":[]},{"build":[],"input":"1.2.3-beta","major":"1","minor":"2","patch":"3","version":"1.2.3-beta","prerelease":["beta"]},{"build":[],"input":"1.2.3","major":"1","minor":"2","patch":"3","version":"1.2.3","prerelease":[]},{"build":[],"input":"2.0.0","major":"2","minor":"0","patch":"0","version":"2.0.0","prerelease":[]}],"invalid":["bad"],"invalid_count":1}}
最大/最小满足版本
在版本列表中找出满足范围的最高或最低版本。
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST
http://www.shujuyu.cn/v1/api/semver/max_satisfying
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
| versions |
array\ |
否 |
- |
| range |
string |
是 |
范围表达式 |
| mode |
string |
否 |
max 最高版本 / min 最低版本 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.range |
string |
- |
| data.mode |
string |
- |
| data.matched |
bool |
- |
| data.result |
object |
- |
| data.candidates |
array |
- |
| data.invalid |
array |
- |
请求示例
返回示例
{"msg":"success","code":0,"data":{"mode":"max","range":"^1.0.0","result":{"build":[],"input":"1.5.0","major":"1","minor":"5","patch":"0","version":"1.5.0","prerelease":[]},"invalid":[],"matched":true,"candidates":[{"build":[],"input":"1.0.0","major":"1","minor":"0","patch":"0","version":"1.0.0","prerelease":[]},{"build":[],"input":"1.5.0","major":"1","minor":"5","patch":"0","version":"1.5.0","prerelease":[]}]}}
差异类型
判断两个版本的差异级别。
调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST
http://www.shujuyu.cn/v1/api/semver/diff
JSON
请求参数
| 参数名 | 类型 | 必填 | 说明 |
| key |
string |
是 |
您的API密钥,可在个人中心获取 |
| from |
string |
是 |
起始版本 |
| to |
string |
是 |
目标版本 |
返回参数说明
| 参数名 | 类型 | 说明 |
| code |
int |
- |
| msg |
string |
- |
| data |
object |
- |
| data.from |
string |
- |
| data.to |
string |
- |
| data.result |
string |
- |
| data.compare |
int |
- |
| data.direction |
string |
- |
请求示例
返回示例
{"msg":"success","code":0,"data":{"to":"2.0.0","from":"1.2.3","result":"major","compare":-1,"direction":"up"}}
产品说明
产品概述
SemVer 2.0.0 版本工具: 版本解析、版本比较、npm 风格范围匹配、排序、最大/最小满足版本、差异类型。纯本地算法,无数据库、Redis 或外部 HTTP 依赖。
使用场景
数据查询:快速集成 版本号解析与范围匹配 到您的应用中
业务系统:将 版本号解析与范围匹配 数据嵌入业务流程
开发工具:通过 API 接口获取 开发工具 数据
数据分析:基于 版本号解析与范围匹配 数据进行分析和决策
费用计算
按次计费单价
¥0.002
/ 次
每次调用接口从账户余额中扣除相应费用,VIP 用户可享折扣
扣费优先级
计费方式详解
· 接口每日免费额度已关闭
· VIP 用户月度免费额度:
· 个人版:每月 5000 次,本接口月上限 5000 次
· 专业版:每月 30000 次,本接口月上限 30000 次
· 企业版:每月 200000 次,本接口月上限 200000 次
· 账户如有注册/活动赠送的免费次数,会优先于接口免费额度扣减
· VIP 月度免费额度仅适用于单次售价不高于 ¥0.0800/次 的接口;接口每日免费额度按接口配置执行
VIP 月度免费额度每月重置,未使用部分不累计至下月。
预付费购买固定调用次数,折算单价与按次付费相同,用完为止。
次数包为独立计费,不与 VIP 折扣叠加。
请在有效期内使用,过期后未使用的次数不可再用。
按次从账户余额扣除费用;所有用户可享量折扣,VIP 用户额外享 VIP 折扣。
扣费公式:实际扣费 = 接口单价 × (1 - VIP 折扣比例 - 量折扣比例),并受总折扣上限和最低利润率保护约束
VIP 折扣:
个人版9折
专业版8折
企业版7折
量折扣:
月付费调用 ≥1000 次享 2%、
月付费调用 ≥10000 次享 5%、
月付费调用 ≥20000 次享 10%
· 量折扣按账号当月全部接口的付费调用次数统计,达到更高档位时按更高档位计算
总折扣上限:VIP 折扣 + 量折扣合计不超过 50%
最低利润率保护:折后价不得低于成本价 × (1 + 15%);若接口售价本身低于该保护价,则取消折扣并按售价计费
余额不足时调用将失败,请及时充值。
VIP 权益对比
| 等级 | 每月免费次数 | 本接口月免费上限 | 折扣 | VIP 折后单价 |
| 免费版 |
按接口配置 |
— |
- |
¥0.002/次 |
| 个人版 |
5000 次 |
5000 次 |
10% |
¥0.0018/次 |
| 专业版 |
30000 次 |
30000 次 |
20% |
¥0.0016/次 |
| 企业版推荐 |
200000 次 |
200000 次 |
30% |
¥0.0014/次 |
* VIP 月度免费额度每月重置。每月免费次数为账号级 VIP 月额度,本接口月免费上限为其中对本接口的限制(接口可单独设置上限或关闭)。VIP 折扣仅适用于余额扣费方式,VIP 折后单价不含量折扣。
本接口已关闭接口级月度免费额度(不影响 VIP 月度免费额度)。接口每日免费额度已关闭。
费用计算示例
* 以下示例未包含量折扣,量折扣按账号当月全部接口的付费调用量另行计算。
示例1:普通用户按次付费
调用 1000 次,费用 = 0.002 × 1000 = ¥2.00
示例2:个人版用户按次付费(仅 VIP 折扣,已考虑最低利润率保护)
调用 1000 次,折扣约 10%,费用 = 0.002 × (1 - 10%) × 1000 ≈ ¥1.80
错误码说明
本接口未定义专属错误码,调用时请参考通用错误码体系。
查看通用错误码参考
| 错误码 | 说明 | 解决方案 |
| 200 | 请求成功 | - |
| 400000 | 请求参数错误 | 检查参数名、格式与取值 |
| 401000 | 认证失败 | 检查 Authorization: Bearer 密钥是否正确、是否过期 |
| 401002 | 缺少 API 认证参数 | 请求未携带 key,请通过 URL 参数 key 或请求头 Authorization 传递密钥 |
| 402000 | 账户余额不足 | 充值后重试 |
| 403000 | 无访问权限 | 确认密钥权限、接口范围与 IP 白名单是否满足要求 |
| 404001 | 接口或端点不存在 | 检查 API 与端点的请求路径 |
| 409000 | 请求冲突 | 请稍后重试 |
| 422000 | 参数校验失败 | 检查参数格式与取值 |
| 429001 | 请求频率超限(QPS) | 降低请求频率,或升级套餐提升额度 |
| 429002 | 分钟级调用频率超限 | 降低调用频率,或升级套餐提升额度 |
| 429003 | 小时级调用额度已用完 | 升级套餐提升额度,或整点后重试 |
| 429004 | 今日调用额度已用完 | 升级套餐提升额度,或次日重试 |
| 500000 | 服务器内部错误 | 携带响应中的 request_id 联系技术支持 |
| 502000 | 服务暂时不可用 | 稍后重试 |
| 503000 | 服务暂时不可用 | 稍后重试 |
| 504000 | 请求超时 | 稍后重试 |