Como criar micro serviços - Nível fácil parte 3

Como já dito nos artigos anteriores, criar um sistema baseado em micro serviços não é difícil. Vamos passo a passo e ao final dessa série, você verá que de fato é simples.

사용자 API



Aqui, vamos criar uma는 API Rest HTTP를 단순화합니다. Isso não deve ser um mistério. Ter uma Controller com as rotas, uma camada de Services, conexão com base de dados, tudo muito simples.

도미니오



Vamos iniciar pela camada de domínio. Isso vai garantir que foquemos em regras de negócio e depois nos preocupamos em implementar as Rotas e regras de aplicação, que não são pertinentes ao domínio.

Primeiro vamos iniciar nosso projeto.


mkdir users-api && cd users-api

yarn init -y



Isso já deve gerar nossa 파스타 e iniciar o package.json . Vamos 구성 o typescript 광장, 터미널 실행 없음:


yarn add -D typescript && \

yarn tsc --init



Isso resolve nossa configuração inicial do typescript . Agora vamos começar com nosso domínio.


mkdir domain && touch domain/user.ts



Com isso vamos ter nossa entidade de user . Antes de começar com a construção do nosso user vamos configurar o jest como nosso runtime para testes.

실행하다:


yarn add -D jest @types/jest ts-jest ts-node



Após o comando acima, teremos o jest instalado, agora vamos configurá-lo:


yarn jest --init



Com esse comando o jest inicia o processo de configuração, com isso seu terminal fará algumas perguntas. Vamos às respostas:
  • ✔ "package.json"에서 "test"스크립트를 실행할 때 Jest를 사용하시겠습니까? (예/아니요)
  • 프레시오네 "n"

  • ✔ 구성 파일에 Typescript를 사용하시겠습니까? (예/아니요)
  • 프레시오네 "y"

  • ✔ 테스트에 사용할 테스트 환경 선택
  • "노드"선택

  • ✔ J에서 커버리지 보고서를 추가하시겠습니까? (예/아니요)
  • 프레시오네 "y"

  • ✔ 커버리지용 코드를 계측하는 데 어떤 공급자를 사용해야 합니까?
  • 선택 "v8"

  • ✔ 모든 테스트 전에 모의 호출, 인스턴스, 컨텍스트 및 결과를 자동으로 지우시겠습니까? (예/아니요)
  • 프레시오네 "y";


  • Agora você pode ver que foi criado um arquivojest.config.ts . Esse é o arquivo de configuração do jest. 더 정확한 추가 구성을 위해 다음을 수행하십시오.

    // tsconfig.json
    
    // ... Logo depois de export default
    
    export default {
    
    // ... Aqui abaixo.
    
      transform: {
    
        "^.+\\.tsx?$": "ts-jest",
    
      },
    
      // ...
    
    


    Vamos criar nosso primeiro teste para saber se está tudo correto.

    Crie o arquivo user.spec.ts (ou execute touch domain/user.spec.ts ) junto com o arquivo user.ts
    Teste do arquivo de teste ( user.spec.ts ) vamos digitar o seguinte código:

    
    // user.spec.ts
    
    describe("Domínio de usuário", () => {
      it("deve funcionar", function () {
        expect(true).toBe(true);
      });
    });
    
    


    Antes de testar, vamos ajustar nosso package.json . Vamos 추가 스크립트입니다. O package.json deve ficar assim:

    // package.json
    
    {
      "name": "users-api",
      "version": "1.0.0",
      "main": "index.js",
      "license": "MIT",
      "scripts": {
        "start": "node index.js",
        "test": "jest"
      },
      "devDependencies": {
        "@types/jest": "^28.1.3",
        "jest": "^28.1.1",
        "ts-jest": "^28.0.5",
        "ts-node": "^10.8.1",
        "typescript": "^4.7.4"
      }
    }
    
    


    que adicionamos uma chavescripts와 nela temos dois(2) 스크립트에 유의하십시오. Um para iniciar aplicação e outro para testar.

    Agora no terminal, execuamos:

    
    yarn test
    
    


    Esperamos que tudo dê certo. Se aparecer 1 passed em verde, significa que tudo está bem configurado.

    A partir de agora, vou explicar o que faremos e o resultado.

    바모스 렘브라. Nossas regras de negócio nos dizem que:

    Todo usuário deve fornecer um e-mail e uma senha para poder se cadastrar.
    Toda atualização do usuário registra a data em que ocorreu.
    Sabendo disso, nosso teste de user deve ficar assim:

    // user.spec.ts
    
    import { User } from "./user";
    
    describe("Domínio de usuário", () => {
        it("deve fornecer um e-mail e senha em User", function () {
            expect(
                new User(
                    "id-fake",
                    "email-fake",
                    "password-fake",
                    "created_at-fake",
                    "updated_at-fake"
                )
            ).toBeTruthy();
        });
    
        it("deve dar erro se não fornecer e-mail ou senha em User", function () {
            expect(() => {
                new User(
                    "id-fake",
                    // Email vazio
                    "",
                    "password-fake",
                    "created_at-fake",
                    "updated_at-fake"
                );
            }).toThrowError("É obrigatório informar um e-mail");
    
            expect(() => {
                new User(
                    "id-fake",
                    "email-fake",
                    // Senha vazia
                    "",
                    "created_at-fake",
                    "updated_at-fake"
                );
            }).toThrowError("É obrigatório informar uma senha");
        });
    });
    


    Se você tentar executar os testes yarn test deve falhar. Mas agora vamos criar nossa classe de usuário para resolver isso.

    // user.ts
    export class User {
        private _user_id: string;
        private _email: string;
        private _password: string;
        private _created_at: string;
        private _updated_at: string;
    
        constructor(
            user_id: string,
            email: string,
            password: string,
            created_at: string,
            updated_at: string
        ) {
            this._user_id = user_id;
            this._email = email;
            this._password = password;
            this._created_at = created_at;
            this._updated_at = updated_at;
    
            this.validate();
        }
    
        private validate() {
            if (!this._email) {
                throw new Error("É obrigatório informar um e-mail");
            }
    
            if (!this._password) {
                throw new Error("É obrigatório informar uma senha");
            }
        }
    }
    
    


    A partir de agora, acompanhe por vídeo. Este artigo ficará imenso caso eu explique tudo. O essencial já está aqui. O que terá no vídeo é a prática do desenvolvimento e insigths.

    동영상 보기



    엠 브리브

    좋은 웹페이지 즐겨찾기