ohayolibs
Version:
Ohayo is a set of essential modules for ohayojp.
156 lines (122 loc) • 4.81 kB
Markdown
---
order: 1
title: _HttpClient
type: Service
---
`/theme` 包含了一个叫 [\_HttpClient](https://github.com/ohayojp/ohayo/blob/master/packages/theme/src/services/http/http.client.ts) 类,其本质还是调用 Angular 的 `HttpClient`。
## 特性
- 更友好的调用方法
- 维护 `loading` 属性
- 处理空值
- 统一时间格式为时间戳
- 支持修饰器 、 等
## 示例
网络请求一般情况下是同 Object 对象做为参数一起使用,例如一个 `get` 请求,原始写法:
```ts
HttpClient.get(url, { params: { pi: 1 } });
```
而对于 `_HttpClient` 来讲,将参数进一步优化为:
```ts
_HttpClient.get(url, { pi: 1 });
```
## OhayoThemeConfig
通用配置项,例如统一对 `_HttpClient` 设置空值、时间处理方式。
```ts
import { OhayoThemeConfig } from '@ohayo/theme';
export function fnOhayoThemeConfig(): OhayoThemeConfig {
return Object.assign(new OhayoThemeConfig(), <OhayoThemeConfig>{
http: {
nullValueHandling: 'ignore',
},
});
}
export class OhayoModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: OhayoModule,
providers: [
{ provide: OhayoThemeConfig, useFactory: fnOhayoThemeConfig },
],
};
}
}
```
### API
| 参数 | 说明 | 类型 | 默认值 |
| ------------------- | ---------- | ------------------ | ----------- |
| `nullValueHandling` | 空值处理 | `include,ignore` | `include` |
| `dateValueHandling` | 时间值处理 | `timestamp,ignore` | `timestamp` |
## 使用修饰器
目标类都必须继承 `BaseApi` 基类。
### 示例
```ts
class RestService extends BaseApi {
query( pi: number, ps: number): Observable<any> {
return;
}
get( id: number): Observable<any> {
return;
}
get( data: {}): Observable<any> {
return;
}
// 使用 `::id` 来表示转义,若 `id` 值为 `undefined` 会忽略转换,例如:
// 当 `id` 为 `10` 时 => 10:type
// 当 `id` 为 `undefined` 时 => :id:type
get( id: number): Observable<any> {
return;
}
save( id: number, data: Object): Observable<any> {
return;
}
save( data: {}): Observable<any> {
return;
}
save( data: {}): Observable<any> {
return;
}
// 若请求的URL不符合授权要求,会直接抛出 `401` 错误,且不发送请求
ACL(): Observable<any> {
return;
}
}
```
### 类
- ``
- ``
### 方法
- ``
- ``
- ``
- ``
- ``
- ``
- ``
- ``
#### HttpOptions
| 参数 | 说明 | 类型 | 默认值 |
| ----------------- | --------------------------------------------------------------------------------------------------- | ---------------------------- | ------ |
| `acl` | ACL 配置,若导入 `/acl` 时自动有效,等同于 `ACLService.can(roleOrAbility: ACLCanType)` 参数值 | `any` | - |
| `observe` | 指定响应内容 | `body,events,response` | - |
| `responseType` | 指定内容格式 | `arraybuffer,blob,json,text` | - |
| `reportProgress` | 是否监听进度事件 | `boolean` | - |
| `withCredentials` | 设置 withCredentials | `boolean` | - |
### 参数
- `` URL 路由参数
- `` URL 参数 QueryString
- `` 参数 Body
- `` 参数 Headers
- `` 请求负载
- 当支持 Body 时(例如:`POST`、`PUT`)为内容体等同 ``
- 当不支持 Body 时(例如:`GET`、`DELETE` 等)为 `QueryString`