API แบบกำหนดขอบเขตและรูปแบบเพื่อการอ่านง่าย
ใช้ API แบบกำหนดขอบเขต และรูปแบบการตั้งชื่อสำหรับ DSL: ใช้โทเค็นเป็นเนมสเปซ จัดกลุ่มด้วยตัวช่วย และทำให้บล็อกมีขนาดเล็กและชัดเจน
API แบบกำหนดขอบเขตและรูปแบบเพื่อการอ่านง่าย เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
เหตุใดจึงกำหนดขอบเขตให้ DSL
DSL ที่อ่านง่ายจะจำกัดสิ่งที่คุณทำได้ในบล็อกและตั้งชื่อสิ่งต่าง ๆ อย่างชัดเจน ใช้เนมสเปซ ตัวช่วยขนาดเล็ก และการจัดกลุ่มเพื่อให้เจตนาชัดเจน
รูปแบบเนมสเปซ
การวางโทเค็นไว้ภายใต้ R ช่วยจำกัดส่วนติดต่อและป้องกันการชนกับสัญลักษณ์ของแอป การเรียกใช้จึงสั้นและกวาดตาอ่านได้ง่าย
struct Route { let method: String; let path: String }
// Namespace instead of global free functions
enum R {
static func GET(_ path: String) -> Route { Route(method: "GET", path: path) }
static func POST(_ path: String) -> Route { Route(method: "POST", path: path) }
}
@resultBuilder
struct RoutesBuilder {
static func buildBlock(_ parts: Route...) -> [Route] { parts }
}
func routes(@RoutesBuilder _ content: () -> [Route]) -> [Route] { content() }
let table = routes {
R.GET("/home")
R.POST("/upload")
}
for r in table { print("\(r.method) \(r.path)") }ตัวช่วยจัดกลุ่ม
ใช้ตัวช่วยจัดกลุ่มขนาดเล็กเพื่อเพิ่มบริบท (prefix และแท็ก) โดยไม่ต้องเขียนซ้ำ บล็อกจึงยังคงเป็นระเบียบ
// Group routes by a shared prefix using a helper
func section(_ prefix: String, @RoutesBuilder _ content: () -> [Route]) -> [Route] {
content().map { Route(method: $0.method, path: prefix + $0.path) }
}
let grouped = routes {
R.GET("/health")
section("/admin") {
R.GET("/dashboard")
R.POST("/upload")
}
}
for r in grouped { print("\(r.method) \(r.path)") } // /admin/* prefixedแยกหน้าที่
เลือกใช้ตัวสร้างขนาดเล็กสำหรับหน้าที่ที่แยกจากกัน (routes กับ middlewares) แต่ละบล็อกจะเปิดเผยเฉพาะสิ่งที่จำเป็น
// A separate builder for middlewares (keeps concerns isolated)
struct Middleware { let name: String }
@resultBuilder
struct MiddlewareBuilder {
static func buildBlock(_ parts: Middleware...) -> [Middleware] { parts }
}
enum M {
static func log(_ name: String) -> Middleware { Middleware(name: "log:\(name)") }
static func auth() -> Middleware { Middleware(name: "auth") }
}
func middlewares(@MiddlewareBuilder _ content: () -> [Middleware]) -> [Middleware] { content() }
let mw = middlewares {
M.log("requests")
M.auth()
}
print(mw.map(\.name))เคล็ดลับด้านความอ่านง่าย
รูปแบบ:
- ใช้กริยาสั้น ๆ: GET, POST, auth
- ให้มีการกระทำหนึ่งรายการต่อบรรทัด
- เลือกใช้บล็อกแบบแบนราบ ซ้อนบล็อกเฉพาะเมื่อต้องการเพิ่มบริบท
- ใส่ป้ายกำกับที่ชัดเจนในตัวช่วย (เช่น prefix:)
ตัวช่วยตรวจสอบ
จัดเตรียมตัวช่วยการตรวจสอบขนาดเล็กเพื่อรักษาความถูกต้องของบล็อก หยุดทันทีพร้อม messages ที่เป็นประโยชน์
// Add a simple validator to catch mistakes early
func validate(_ routes: [Route]) -> [String] {
var issues: [String] = []
let seen = Set(routes.map { $0.method + " " + $0.path })
if seen.count != routes.count { issues.append("Duplicate route detected") }
if routes.contains(where: { !$0.path.hasPrefix("/") }) {
issues.append("Paths must start with /")
}
return issues
}
let issues = validate(grouped)
print(issues.isEmpty ? "OK" : "Issues: \(issues)")รูปแบบส่วนติดต่อที่กำหนดขอบเขต
ตรวจสอบสั้น ๆ: ตัวเลือกใดทำให้บล็อก DSL ปลอดภัยและชัดเจนยิ่งขึ้น
ทบทวน
ทบทวน: กำหนดขอบเขตให้ DSL ด้วยเนมสเปซ ใช้ตัวช่วยจัดกลุ่มขนาดเล็ก ทำให้บล็อกมุ่งเน้นเฉพาะจุด และเรียกใช้ validate ตั้งแต่เนิ่น ๆ เพื่อให้โค้ดปลอดภัยและอ่านง่ายขึ้น
เรียนรู้ Swift ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 122
- บทเรียน
- 409
คำถามที่พบบ่อย
บทเรียน “API แบบกำหนดขอบเขตและรูปแบบเพื่อการอ่านง่าย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “API แบบกำหนดขอบเขตและรูปแบบเพื่อการอ่านง่าย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “API แบบกำหนดขอบเขตและรูปแบบเพื่อการอ่านง่าย”
ใช้ API แบบกำหนดขอบเขต และรูปแบบการตั้งชื่อสำหรับ DSL: ใช้โทเค็นเป็นเนมสเปซ จัดกลุ่มด้วยตัวช่วย และทำให้บล็อกมีขนาดเล็กและชัดเจน คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “API แบบกำหนดขอบเขตและรูปแบบเพื่อการอ่านง่าย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้าง DSL ขนาดเล็กด้วย result builders
- API แบบกำหนดขอบเขตและรูปแบบเพื่อการอ่านง่าย
- ตัวอย่างเชิงปฏิบัติโดยไม่ใช้เฟรมเวิร์ก UI