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

如何在WSO2 API Manager与Integrator Studio限制API非工作时段调用?

限制WSO2 API Manager/Integrator Studio中API的非工作时段调用方法

一、WSO2 API Manager 实现方案

1. 自定义中介拦截请求

直接写个中介脚本判断当前时间是否在工作时段,把它加到API的入流里就行:

  • 打开API Publisher,找到目标API的「Manage」→「Mediations」,在入流里添加Script Mediator,用Groovy或JS写时间判断逻辑。
  • 示例Groovy脚本:
import java.util.Calendar;

Calendar cal = Calendar.getInstance();
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
int hour = cal.get(Calendar.HOUR_OF_DAY);

// 定义工作时段:周一到周五(对应Calendar的1-5),9:00-18:00
boolean isWorkingHours = (dayOfWeek >= Calendar.MONDAY && dayOfWeek <= Calendar.FRIDAY) && (hour >=9 && hour <18);

if(!isWorkingHours){
    mc.setProperty("HTTP_SC", "503");
    mc.setPayloadJSON('{"error": "服务仅在工作时段可用"}');
    mc.getCalloutSequence().mediated(mc);
    return;
}

保存发布后,非工作时段调用会直接返回503错误。

2. 用高级节流策略限制

针对订阅的应用设置时间窗口节流:

  • 进入API Publisher的「Subscriptions」标签,给目标应用的订阅创建自定义节流策略:设置工作时段允许无限调用,非工作时段允许0次调用。
  • 绑定策略后,非工作时段的请求会触发节流,返回429或自定义错误提示。

二、WSO2 Integrator Studio 实现方案

1. 在代理服务里加时间判断逻辑

打开代理服务的中介流设计器,添加Script Mediator写时间判断:

  • 如果不在工作时段,直接返回错误并终止流程,示例中介序列配置:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="CheckWorkingHours">
    <script language="groovy">
        import java.util.Calendar;
        Calendar cal = Calendar.getInstance();
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        // 周一到周五是2-6(Calendar里周日是1),9点到18点
        boolean isWorkingHours = (dayOfWeek >= 2 && dayOfWeek <=6) && (hour >=9 && hour <18);
        if(!isWorkingHours){
            mc.setProperty("HTTP_SC", "503");
            mc.setPayloadJSON('{"error": "服务仅在工作时段提供"}');
            send();
            terminate();
        }
    </script>
</sequence>

把这个序列加到代理服务的入流,部署后就生效了。

2. 定时任务启停服务

如果需要完全禁用服务,用任务调度器定时启停:

  • 写个任务类,实现工作时段启动服务、非工作时段停止服务的逻辑。
  • 在Integrator Studio里配置任务触发时间:比如每天9:00执行启动任务,18:00执行停止任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:45:41