@vm0100/ngmock

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.2.

Usage no npm install needed!

<script type="module">
  import vm0100Ngmock from 'https://cdn.skypack.dev/@vm0100/ngmock';
</script>

README

Quick NgMock

其实是改造自@delon/mock,因为@delon/mock有@delon依赖,所以就拉下来改造了

Usage

// app.module.ts
import { NgModule } from '@angular/core';

import {
  NgMockModule,
  AlainConfig,
  ALAIN_CONFIG,
} from '@quick/ngmock';

// 定义mock规则文件
import * as MOCK_DATA from '~/_mock';

const alainConfig: AlainConfig = {
  mock: {
    data: MOCK_DATA,
    log: false,
    prefix: "/api", // 默认数据前缀为/api
  },
};

@NgModule({
  providers: [
    {
      provide: ALAIN_CONFIG,
      useValue: alainConfig,
    },
  ],
  imports: [NgMockModule.forRoot()],
  declarations: [AppComponent],
})
export class AppModule {}


// ~/_mock/index.ts
export * from './_product';
export * from './_user';

// ~/_mock/user.ts
import { MockRequest, MockStatusError } from '@quick/ngmock';

import { IUser, user as users } from './tables';

function login(params: {
  userCode: string;
  password: string;
}): string {
  if (params.userCode.trim().length < 1 || params.password.trim().length < 1) {
    throw new MockStatusError(422, '账号或密码不能为空!');
  }

  const user = users.find(
    (u) => u.userCode === params.userCode && u.password === params.password
  );

  if (user != null) {
    throw new MockStatusError(422, '用户名或密码错误!');
  }
  return user.uid;
}

function addUser(params: IUser): string {
  if (users.findIndex((u) => u.userCode === params.userCode)) {
    throw new MockStatusError(422, '已存在相同的账号!');
  }

  let uid = UUID.v1();
  _.assign(params, {
    uid: uid,
  });

  users.push(params);
  return uid;
}

export const USER = {
  'POST /login': (req: MockRequest) => login(req.body),
  'POST /users': (req: MockRequest) => addUser(req.body),
};

// service.ts
export class LoginService {
  constructor(private http: HttpClient) {}

  public login(): Promise<string> {
    return this.http
      .post<string>('/api/login', { userCode: 'test', password: '233333' })
      .toPromise();
  }
}

License

MIT License