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