mirror of https://github.com/abpframework/abp.git
committed by
GitHub
3 changed files with 116 additions and 3 deletions
@ -0,0 +1,109 @@ |
|||
# Environment |
|||
|
|||
Every application needs some ** environment ** variables. In Angular world, this is usually managed by `environment.ts`, `environment.prod.ts` and so on. It is the same for ABP as well. |
|||
|
|||
Current `Environment` configuration holds sub config classes as follows: |
|||
|
|||
```typescript |
|||
export interface Environment { |
|||
apis: Apis; |
|||
application: Application; |
|||
oAuthConfig: AuthConfig; |
|||
production: boolean; |
|||
remoteEnv?: RemoteEnv; |
|||
} |
|||
``` |
|||
|
|||
## Apis |
|||
|
|||
```typescript |
|||
export interface Apis { |
|||
[key: string]: ApiConfig; |
|||
default: ApiConfig; |
|||
} |
|||
|
|||
export interface ApiConfig { |
|||
[key: string]: string; |
|||
rootNamespace?: string; |
|||
url: string; |
|||
} |
|||
``` |
|||
|
|||
Api config has to have a default config and it may have some additional ones for different modules. |
|||
I.e. you may want to connect to different Apis for different modules. |
|||
|
|||
Take a look at following example |
|||
|
|||
```json |
|||
{ |
|||
// ... |
|||
"apis": { |
|||
"default": { |
|||
"url": "https://localhost:8080", |
|||
}, |
|||
"AbpIdentity": { |
|||
"url": "https://localhost:9090", |
|||
} |
|||
}, |
|||
// ... |
|||
} |
|||
``` |
|||
|
|||
When an api from `AbpIdentity` is called, the request will be sent to `"https://localhost:9090"`. |
|||
Everything else will be sent to `"https://localhost:8080"` |
|||
|
|||
* `rootNamespace` **(new)** : Root namespace of the related API. e.g. Acme.BookStore |
|||
|
|||
## Application |
|||
|
|||
```typescript |
|||
export interface Application { |
|||
name: string; |
|||
baseUrl?: string; |
|||
logoUrl?: string; |
|||
} |
|||
``` |
|||
|
|||
* `name`: Name of the backend Application. It is also used by `logo.component` if `logoUrl` is not provided. |
|||
* `logoUrl`: Url of the application logo. It is used by `logo.component` |
|||
* `baseUrl`: [For detailed information](./Multi-Tenancy.md#domain-tenant-resolver) |
|||
|
|||
|
|||
## AuthConfig |
|||
|
|||
For authentication, we use angular-oauth2-oidc. Please check their [docs](https://github.com/manfredsteyer/angular-oauth2-oidc) out |
|||
|
|||
## RemoteEnvironment |
|||
|
|||
Some applications need to integrate an existing config into the `environment` used throughout the application. |
|||
Abp Framework supports this out of box. |
|||
|
|||
To integrate an existing config json into the `environment`, you need to set `remoteEnv` |
|||
|
|||
```typescript |
|||
export type customMergeFn = ( |
|||
localEnv: Partial<Config.Environment>, |
|||
remoteEnv: any, |
|||
) => Config.Environment; |
|||
|
|||
export interface RemoteEnv { |
|||
url: string; |
|||
mergeStrategy: 'deepmerge' | 'overwrite' | customMergeFn; |
|||
method?: string; |
|||
headers?: ABP.Dictionary<string>; |
|||
} |
|||
``` |
|||
|
|||
* `url` *: Required. The url to be used to retrieve environment config |
|||
* `mergeStrategy` *: Required. Defines how the local and the remote `environment` json will be merged |
|||
* `deepmerge`: Both local and remote `environment` json will be merged recursively. If both configs have same nested path, the remote `environment` will be prioritized. |
|||
* `overwrite`: Remote `environment` will be used and local environment will be ignored. |
|||
* `customMergeFn`: You can also provide your own merge function as shown in the example. It will take two parameters, `localEnv: Partial<Config.Environment>` and `remoteEnv` and it needs to return a `Config.Environment` object. |
|||
* `method`: HTTP method to be used when retrieving environment config. Default: `GET` |
|||
* `headers`: If extra headers are needed for the request, it can be set through this field. |
|||
|
|||
|
|||
## What's Next? |
|||
|
|||
* [Service Proxies](./Service-Proxies.md) |
|||
|
|||
Loading…
Reference in new issue