GoDasturchi
Resource Modeling & URL Design

Resource Modeling & URL Design

Resurslarni modellashtirish va URL dizayni

Kutubxonadagi javonlar ustidagi yorliqlarni tasavvur qiling: "Badiiy adabiyot", "Tarix", "Fan" — bular hammasi OT (narsa nomi). Hech qachon javonga "Kitobni oling" deb yorliq yopishtirmaysiz — bu BUYRUQ, joy nomi emas. REST API dizaynida ham xuddi shunday qoida bor: URL — bu RESURS (narsa)ning MANZILI, harakat emas. Shuning uchun /getBooks, /createBook, /deleteBookById kabi FE'L asosidagi yo'llar — noto'g'ri naqsh; to'g'risi — /books resursiga HTTP METODINI (GET, POST, DELETE) qo'llash.

example.go
package main

import "fmt"

// Book — Bookstore API'sining markaziy resursi
type Book struct {
	ID     string
	Title  string
	Author string
	Price  float64
	Stock  int
}

// Route — bitta REST yo'lini (metod + yo'l) ifodalaydi
type Route struct {
	Method string
	Path   string
}

func (r Route) String() string {
	return r.Method + " " + r.Path
}

func main() {
	routes := []Route{
		{"GET", "/books"},
		{"POST", "/books"},
		{"GET", "/books/{id}"},
	}
	for _, r := range routes {
		fmt.Println(r.String())
	}
}

E'tibor bering: BITTA /books yo'li — HAR XIL HTTP metodlar bilan HAR XIL vazifani bajaradi: GET /books — RO'YXATNI o'qiydi, POST /books — YANGI kitob YARATADI. Ikkalasi ham bitta "manzil"ga (resurs) tegishli, farq — FAQAT metodda. /books/{id} esa — BITTA aniq kitobning manzili: GET /books/{id} — o'sha kitobni o'qiydi, PUT/DELETE /books/{id} — uni o'zgartiradi yoki o'chiradi ("Routing and Path Parameters" darsida ko'rgan {id} shablon va r.PathValue("id") naqshini bu yerda ham ishlatamiz).

Bu naqsh — ko'plik OT + ichma-ich ID (/books, /books/{id}) — deyarli BARCHA zamonaviy REST API'larda uchraydigan STANDART. U bashorat qilinadigan (predictable): yangi resurs (masalan /reviews) qo'shilganda, dasturchi allaqachon qanday yo'l kutishni BILADI, hech kim hujjatni o'qib o'tirmaydi.

>_ Exercise

Kitobni TO'LIQ boshqaradigan yo'llar ro'yxatini to'ldiring.

  • routes ro'yxatiga {"PUT", "/books/{id}"} qo'shing — kitobni TO'LIQ yangilash uchun
  • routes ro'yxatiga {"DELETE", "/books/{id}"} qo'shing — kitobni o'chirish uchun
  • barcha 5 ta yo'lni String() orqali chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

REST API'da URL — resursning (OT) manzili, harakat (fe'l) emas; bitta resursga qo'llanadigan turli HTTP metodlar (GET/POST/PUT/DELETE) uning ustida turli amallarni ifodalaydi.

NEXT UP

The Basic CRUD Handlers: Create & Read

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Resource Modeling & URL Design

Resurslarni modellashtirish va URL dizayni

Kutubxonadagi javonlar ustidagi yorliqlarni tasavvur qiling: "Badiiy adabiyot", "Tarix", "Fan" — bular hammasi OT (narsa nomi). Hech qachon javonga "Kitobni oling" deb yorliq yopishtirmaysiz — bu BUYRUQ, joy nomi emas. REST API dizaynida ham xuddi shunday qoida bor: URL — bu RESURS (narsa)ning MANZILI, harakat emas. Shuning uchun /getBooks, /createBook, /deleteBookById kabi FE'L asosidagi yo'llar — noto'g'ri naqsh; to'g'risi — /books resursiga HTTP METODINI (GET, POST, DELETE) qo'llash.

example.go
package main

import "fmt"

// Book — Bookstore API'sining markaziy resursi
type Book struct {
	ID     string
	Title  string
	Author string
	Price  float64
	Stock  int
}

// Route — bitta REST yo'lini (metod + yo'l) ifodalaydi
type Route struct {
	Method string
	Path   string
}

func (r Route) String() string {
	return r.Method + " " + r.Path
}

func main() {
	routes := []Route{
		{"GET", "/books"},
		{"POST", "/books"},
		{"GET", "/books/{id}"},
	}
	for _, r := range routes {
		fmt.Println(r.String())
	}
}

E'tibor bering: BITTA /books yo'li — HAR XIL HTTP metodlar bilan HAR XIL vazifani bajaradi: GET /books — RO'YXATNI o'qiydi, POST /books — YANGI kitob YARATADI. Ikkalasi ham bitta "manzil"ga (resurs) tegishli, farq — FAQAT metodda. /books/{id} esa — BITTA aniq kitobning manzili: GET /books/{id} — o'sha kitobni o'qiydi, PUT/DELETE /books/{id} — uni o'zgartiradi yoki o'chiradi ("Routing and Path Parameters" darsida ko'rgan {id} shablon va r.PathValue("id") naqshini bu yerda ham ishlatamiz).

Bu naqsh — ko'plik OT + ichma-ich ID (/books, /books/{id}) — deyarli BARCHA zamonaviy REST API'larda uchraydigan STANDART. U bashorat qilinadigan (predictable): yangi resurs (masalan /reviews) qo'shilganda, dasturchi allaqachon qanday yo'l kutishni BILADI, hech kim hujjatni o'qib o'tirmaydi.

>_ Exercise

Kitobni TO'LIQ boshqaradigan yo'llar ro'yxatini to'ldiring.

  • routes ro'yxatiga {"PUT", "/books/{id}"} qo'shing — kitobni TO'LIQ yangilash uchun
  • routes ro'yxatiga {"DELETE", "/books/{id}"} qo'shing — kitobni o'chirish uchun
  • barcha 5 ta yo'lni String() orqali chop eting

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

REST API'da URL — resursning (OT) manzili, harakat (fe'l) emas; bitta resursga qo'llanadigan turli HTTP metodlar (GET/POST/PUT/DELETE) uning ustida turli amallarni ifodalaydi.

NEXT UP

The Basic CRUD Handlers: Create & Read