Multi Application Instances
The Package github.com/kataras/iris/v12/apps
provides a globally scoped control over all registered Iris Applications of the same Program.
Below you will find a use case for each feature.
The Get
function
Get
functionThe Get
function returns an Iris Application based on its "appName". It returns nil when no application was found with the given exact name.
If "appName" parameter is missing then it returns the last registered one. When no application is registered yet then it creates a new on-fly with a "Default" name and returns that instead. The "Default" one can be used across multiple Go packages of the same Program too.
Applications of the same program are registered automatically.
To check if at least one application is registered or not, use the GetAll() []*iris.Application
function instead.
Features
Access an Iris Application globally from all of your Go packages of the same Program without a global parameter and import cycle.
The empty _
import statement will call the userapi.init
function (before main
) which initializes an Iris Application, if not already exists, and registers it to the internal global store for further use across packages.
Reference one or more Iris Applications based on their names.
The Application.SetName
method sets a unique name to this Iris Application. It sets a child prefix for the current Application's Logger. Its Application.String
method returns the given name. It returns itself.
The main
function creates and registers an Iris Application on "app.company.com"
name, after that declaration every package of the same Program can retrieve that specific Application instance through its name.
The Switch
function
Switch
functionThe Switch
function returns a new Application with the sole purpose of routing the matched Applications through the "provided cases". Read below about the available SwitchProviders and how you can create and use your own one.
The cases are filtered in order of their registration.
Example Code:
Note that this is NOT an alternative for a load balancer. The filters are executed by registration order and a matched Application handles the request, that's all it does.
The returned Switch Iris Application can register routes that will run when neither of the registered Applications is responsible to handle the incoming request against the provided filters.
The returned Switch Iris Application can also register custom error code handlers, e.g. to inject the 404 on not responsible Application was found. It can also be wrapped with its WrapRouter
method, which is really useful for logging and statistics.
The SwitchProvider
interface
SwitchProvider
interfaceThis is the first required input argument for the Switch
function.
A SwitchProvider
should return one or more SwitchCase
values.
The SwitchCase
structure contains the Filter and the target Iris Application.
The SwitchOptions
structure
SwitchOptions
structureThis is the last variadic (optional) input argument for the Switch
function.
The SetHost
function is a SwitchOption. It force sets a Host field for the matched Application's request object. Extremely useful when used with Hosts SwitchProvider. Usecase: www. to root domain without redirection (SEO reasons) and keep the same internal request Host for both of them so the root app's handlers will always work with a single host no matter what the real request Host was.
Example Code:
Join different type of SwitchProviders
Wrap with the Join
slice to pass more than one provider at the same time.
Example Code:
Last updated