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.
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.
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
$ go run main.go
Kodingizni ishga tushiring