kotlin - javalin中限制选项方法

标签 kotlin embedded-jetty rate-limiting javalin

我们有如下的 kotlin 代码,我尝试使用 Javalin(3.12.0) 禁用 API 的选项方法,如下所示,但它也会导致阻止所有其他方法,例如 get 和 post 。我在这里缺少什么?

val app = Javalin.create {
        it.defaultContentType = "application/json"
        it.enableWebjars()
        it.addStaticFiles("", Location.CLASSPATH)
        it.enableCorsForAllOrigins()
        it.dynamicGzip = true
    }

app.options("/*") {ctx -> ctx.status(405)}

app.routes {        
        path("/auth") {
             post("/login") {
                Auth.doLogin(it)
            }
             get("/metrics") {
                val results = getData()
                it.json(results)
            }     
         }

还有2个问题 1.想要使用以下代码实现一小时内 20 个请求的 get APi 的速率限制

   app.get("/") { ctx ->
     RateLimit(ctx).requestPerTimeUnit(5, TimeUnit.MINUTES) // throws if rate limit is exceeded
     ctx.status("Hello, rate-limited World!")
   }

如何实现?

  • 如何限制 API 调用时显示的 jetty 服务器版本?
  • 最佳答案

    对于码头...

    Jetty 中只有 1 个速率限制概念,那就是 org.eclipse.jetty.server.AcceptRateLimit ,作为 Jetty Container LifeCycle bean 添加到 ServerConnector ,它无法调整特定请求端点的速率,只能调整整个连接器的速率。

    如果您想要特定的端点速率,则 org.eclipse.jetty.servlets.QoSFilter Jetty 就是这样做的。

    org.eclipse.jetty.server.HttpConfiguration对于org.eclipse.jetty.server.ServerConnector包含启用/禁用服务器公告的控件。

    查看

    • HttpConfiguration.setSendServerVersion(boolean)
    • HttpConfiguration.setSendXPoweredBy(boolean)
    • HttpConfiguration.setSendDateHeader(boolean)

    关于kotlin - javalin中限制选项方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70845919/

    相关文章:

    android - 如何修复此 PlayerNotificationManager.createWithNotificationChannel 错误

    embedded-jetty - 嵌入式码头 - IllegalStateException : No SessionManager

    gwt - GWT 的托管模式码头从哪里运行?

    javascript - Discord webhook 速率限制

    java - Kotlin 将注释作为参数传递给注释

    kotlin - 如何使用 Kotlin 的谓词将列表拆分为子列表?

    android - 如何在Timer中使用OpenGL

    java - 如何优雅地取消嵌入式 Jetty 中死锁的 WEB 请求

    algorithm - 分布式限速算法

    Facebook 应用程序速率限制 #4 - 2018 年 6 月错误