jinxiansen/guardian
[[δΈζηπ¨π³]](README_CN.md)
Installation π¦
To include it in your package, add the following to your Package.swift file.
let package = Package(
name: "Project",
dependencies: [
...
.package(url: "https://github.com/Jinxiansen/Guardian.git", from: "3.0.0"),
],
targets: [
.target(name: "App", dependencies: ["Guardian", ... ])
]
)
Usage π
There are two ways to useοΌ
- Global useοΌ
Guardian Configurable fields: Maximum number of visits, time units, and cache to use.
If you do not provide your own cache, Guardian will create its own memory cache.
// Each api URL is limited to 20 times per minute
let guardian = GuardianMiddleware(rate: Rate(limit: 20, interval: .minute)) or
on configure.swift
- Import header files
import Guardian- Join before services
var middlewares = MiddlewareConfig()
middlewares.use(GuardianMiddleware(rate: Rate(limit: 25, interval: .minute), closure: { (req) -> EventLoopFuture<Response>? in
let view = ["result":"429","message":"The request is too fast. Please try again later!"]
return try view.encode(for: req)
}))
services.register(middlewares)
Method Two:
- Routing group use:
Adding Middleware to a Routing Group
let group = router.grouped(GuardianMiddleware(rate: Rate(limit: 25, interval: .minute)))
group.get("welcome") { req in
return "hello,world !"
}Support custom return data π
Guardian adds support for custom return data, as in the following example:
Return a JSON object:
middlewares.use(GuardianMiddleware(rate: Rate(limit: 20, interval: .minute), closure: { (req) -> EventLoopFuture<Response>? in
let view = ["result":"429","message":"The request is too fast. Please try again later!"]
return try view.encode(for: req)
}))or return a Leaf/Html web page:
middlewares.use(GuardianMiddleware(rate: Rate(limit: 25, interval: .minute), closure: { (req) -> EventLoopFuture<Response>? in
let view = try req.view().render("leaf/busy")
return try view.encode(for: req)
}))or Custom returns other types of data...
Rate.Interval Enumeration types
Currently supported setup intervals are:
case .second
case .minute
case .hour
case .dayContacts 
If you have any questions or suggestions you can raise one Issues or contact me:
Email : hi@jinxiansen.com
Twitter : @Jinxiansen
License π
Guardian is released under the MIT license. See LICENSE for details.
Package Metadata
Repository: jinxiansen/guardian
Default branch: master
README: README.md