Výukový program Nest JS REST API

Výukový program Nest JS REST API

Začínáme

První věci, které budete potřebovat, jsou:

  • Uzel nainstalován
  • Váš oblíbený editor kódu/IDE

Jakmile máte tato nastavení, začněme s hnízdem.
Nainstalujte Nest js CLI:

npm i -g @nestjs/cli

Nyní to můžeme použít k zavedení našeho projektu hnízda pomocí následujícího příkazu:

nest new <project-name>

Příkaz by měl začít vytvářet lešení vaší aplikace, vybrat preferovaného správce balíčků a nechat CLI nastavit a nainstalovat závislosti.

Poté přejděte do adresáře projektu a spusťte vývojový server.

cd nest-beginner
npm run start:dev

Otevřete prohlížeč a přejděte na http://localhost:3000/ a měli byste vidět známou zprávu

Vývoj našeho API

Aby byl tento návod jednoduchý, budeme používat nest CLI resource generátor recept na generování našich zdrojů. Pokračujte a spusťte následující příkaz pro vygenerování uživatelského prostředku pro naše API.

V tomto tutoriálu budeme vyvíjet REST API, takže pokračujte a vyberte tuto možnost a také nechejte Nest vygenerovat vstupní body CURD, abychom mohli začít s nějakým standardním kódem.

Po úspěšném spuštění příkazu byste měli mít následující soubory v src/ adresář:

Začneme definováním uživatelské entity a DTO:

// user.entity.ts
export class User {
  id: number;
  username: string;
  email: string;
  password: string;
}
// create-user.dto.ts
export class CreateUserDto {
  username: string;
  email: string;
  password: string;
}

Vzhledem k tomu, že používáme základní desku zdroje generovaného vnořením, je to jednodušší, protože potřebujeme upravit pouze obchodní logiku ve vrstvě služeb, kterou řadič již využívá ve vrstvě API. (pro tento tutoriál budeme vše ukládat do paměti, nezapomeňte, že v reálné aplikaci bychom použili databázi jako MySQL nebo MongoDB)

// user.service.ts
@Injectable()
export class UsersService {
  private users: User[] = [];
  private idSeq = 0;

  create(createUserDto: CreateUserDto) {
  }

  findAll(): User[] {
    return this.users;
  }

  findOne(id: number): User {
  }

  update(id: number, updateUserDto: UpdateUserDto): User {
  }

  remove(id: number): User {
  }
}

Začněme nejprve metodami Get.

// user.service.ts
  findAll(): User[] {
    return this.users;
  }

  findOne(id: number): User {
    return this.users.find((user) => user.id === id);
  }

Chcete-li vytvořit uživatele, vložíme DTO pro vytvoření uživatele a pomocí proměnné idSeq pro něj vygenerujeme sekvenční id:

// user.service.ts
  create(createUserDto: CreateUserDto) {
    this.users.push({
      ...createUserDto,
      id: this.idSeq++,
    });
    return this.users.at(-1);
  }

Pro aktualizaci uživatele nejprve najdeme index podle id, pokud uživatel existuje, přepíšeme hodnoty aktualizačním uživatelem DTO.

// user.service.ts
  update(id: number, updateUserDto: UpdateUserDto): User {
    const i = this.users.findIndex((user) => user.id == id);
    if (i === -1) return null;
    this.users[i] = {
      ...this.users[i],
      ...updateUserDto,
    };
    return this.users[i];
  }

Pro smazání podobně zjistíme, zda uživatel existuje podle id, a použijeme pole slice způsob, jak to odstranit z paměti:

// user.service.ts
  remove(id: number): User {
    const i = this.users.findIndex((user) => user.id == id);
    if (i === -1) return null;
    const user = this.users[i];
    this.users.splice(i, 1);
    return user;
  }

Nyní jsou všechny naše funkce CRUD na místě a můžeme otestovat naše API, ano, slyšeli jste správně, nepotřebujeme zapojovat ovladač, nastavovat modul a propojovat jej s naší aplikací, vše udělalo hnízdo CLI z toho pro nás, když jsme generovali zdroje uživatelů. Takže zapněte Postman nebo Insomnia nebo cokoli, co je váš oblíbený HTTP klient.

Zdrojový kód tohoto článku najdete v tomto úložišti GitHub.

Neváhejte mě kontaktovat na Twitteru @cryptus_neoxys a spojit se se mnou na LinkedIn.

Odkazy a zdroje

Nest JS Docs