Rota Parametreleri
Coddy'nin Node.js Journey'sinin TypeScript ve NestJS bölümünün bir parçası. Ders 4 / 24.
Bir istemcinin çoğu zaman tüm listeye değil, tek bir göreve ihtiyacı olur. Bir yol parametre içerebilir: istekten isteğe değişen bir bölüm.
@Get(':isbn')
findOne(@Param('isbn') isbn: string) {
return this.books.find((book) => book.isbn === isbn);
}:isbn, yolun o bölümündeki herhangi bir değerle eşleşir; bu nedenle GET /books/978 bu metoda ulaşır. @Param('isbn'), bu değeri metoda aktarır. Bu değer her zaman metindir: /books/42, sayı olan 42'yi değil, '42' metnini verir.
Adı belirtmezsen @Param(), değerin kendisi yerine tüm parametreleri içeren nesneyi verir: { isbn: '978' }.
Görev
KolayBir istemci çoğu zaman listenin tamamını değil, tek bir görevi ister. Kimliğine göre tek bir görev döndüren bir rota ekle.
src/tasks/tasks.controller.tsdosyasında,GET /tasks/:idiçinTasksControllersınıfına ikinci bir yöntem ekle (adınıfindOnekoy).:id, yolun o bölümündeki herhangi bir değeri temsil eder; bu nedenle/tasks/2bu rotaya ulaşır.- Kimliği yoldan
@Param('id')ile oku.Paramöğesini@nestjs/commoniçinden içe aktar. - Kimlik,
"2"gibi metin olarak gelir; ancakthis.tasksiçindeki kimlikler sayıdır ve"2" === 2ifadesi false olur. Karşılaştırmadan önce kimliği sayıya dönüştür. - Bu kimliğe sahip görevi döndür.
GET /tasksrotasını olduğu gibi bırak: hâlâ listenin tamamını döndürüyor.
Dene: GET /tasks/2 isteğini gönder. 200 yanıtı ve şunu alırsın:
{ "id": 2, "title": "Fix the login bug", "done": false }GET /tasks/1 ve GET /tasks/3 isteklerini de gönder. Ardından GET /tasks/99 isteğini gönder. Bu kimliğe sahip bir görev yok, bu nedenle yöntemin hiçbir şey döndürmez ve Nest 200 yanıtı ile boş bir gövde gönderir. Şimdilik beklenen davranış budur. İstemciye hiçbir bilgi vermez; bunu sonraki bir ders düzeltecek.
Kendin dene
import { Controller, Get } from '@nestjs/common';
interface Task {
id: number;
title: string;
done: boolean;
}
@Controller('tasks')
export class TasksController {
private tasks: Task[] = [
{ id: 1, title: 'Write the README', done: true },
{ id: 2, title: 'Fix the login bug', done: false },
{ id: 3, title: 'Plan the sprint', done: false },
];
@Get()
findAll(): Task[] {
return this.tasks;
}
}
TypeScript ve NestJS bölümündeki tüm dersler
1Nest Temelleri
Sınıflar ve MetotlarMerhaba, NestBir Controller Kaydetme4Guard’lar, Filtreler, Interceptor’lar
Guard’larKendi başına pratik yap: Express playground