Swift Academy · पाठ

कंटेंट और JSON एन्कोडिंग

अनुरोध और प्रतिक्रिया के बॉडी को डिकोड और एन्कोड कीजिए।

पाठ 2, कुल 4 में से13 चरण

कंटेंट और JSON एन्कोडिंग, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Content प्रोटोकॉल

HTTP के माध्यम से भेजे जाने वाले Vapor मॉडल Content के अनुरूप होते हैं। Content, स्विफ्ट के Codable पर आधारित है और इसमें अनुरोध के मुख्य भागों से डिकोड होने तथा प्रतिक्रियाओं में अपने-आप एन्कोड होने की क्षमता जोड़ता है।

import Vapor

struct Todo: Content {
    var id: Int?
    var title: String
    var done: Bool
}

प्रतिक्रिया को JSON के रूप में एन्कोड करना

किसी हैंडलर से कोई भी Content मान लौटाएँ और Vapor उसे JSON में एन्कोड कर देगा तथा आपके लिए सही Content-Type हेडर सेट कर देगा।

app.get("todo") { req -> Todo in
    Todo(id: 1, title: "Learn Vapor", done: false)
}

अनुरोध के मुख्य भाग को डिकोड करना

आने वाले अनुरोध से टाइप किया हुआ पेलोड req.content.decode(_:) के माध्यम से पढ़ें। Vapor Content-Type की जाँच करके उसी के अनुसार JSON (या फ़ॉर्म डेटा) को पार्स करता है।

app.post("todo") { req -> Todo in
    let incoming = try req.content.decode(Todo.self)
    return incoming
}

Content के रूप में एरे

Content प्रकारों के संग्रह अपने-आप JSON एरे में एन्कोड हो जाते हैं। [Todo] लौटाएँ और क्लाइंट को JSON सूची प्राप्त होगी।

app.get("todos") { req -> [Todo] in
    [Todo(id: 1, title: "A", done: false),
     Todo(id: 2, title: "B", done: true)]
}

कस्टम Coding Keys

क्योंकि Content, Codable है, इसलिए आप CodingKeys का उपयोग करके स्विफ्ट प्रॉपर्टी नामों को अलग JSON कुंजियों से मैप कर सकते हैं—यह snake_case एपीआई के लिए उपयोगी है।

struct User: Content {
    var firstName: String
    enum CodingKeys: String, CodingKey {
        case firstName = "first_name"
    }
}

JSON एन्कोडर कॉन्फ़िगर करना

आप ContentConfiguration के माध्यम से वैश्विक एन्कोडिंग रणनीति सेट कर सकते हैं, जैसे सभी कुंजियों को snake_case में बदलना या तिथियों को ISO-8601 के रूप में फ़ॉर्मैट करना।

let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToSnakeCase
encoder.dateEncodingStrategy = .iso8601
ContentConfiguration.global.use(encoder: encoder, for: .json)

डिकोड की गई सामग्री का सत्यापन

Vapor का Validatable प्रोटोकॉल आपको सत्यापन नियम घोषित करने देता है। खराब आगत को स्पष्ट 400 त्रुटि के साथ अस्वीकार करने के लिए डिकोड करने से पहले try Todo.validate(content: req) कॉल करें।

extension Todo: Validatable {
    static func validations(_ v: inout Validations) {
        v.add("title", as: String.self, is: !.empty)
    }
}

हैंडलर में सत्यापन का उपयोग करना

पहले सत्यापन करें, फिर डिकोड करें। सत्यापन विफल होने पर Vapor अपने-आप त्रुटि उत्पन्न करता है और क्लाइंट को जानकारी देने वाली त्रुटि प्रतिक्रिया प्राप्त होती है।

app.post("todo") { req -> Todo in
    try Todo.validate(content: req)
    return try req.content.decode(Todo.self)
}

अनुरोध और प्रतिक्रिया के लिए अलग डेटा प्रकार

एक अच्छी पद्धति है कि आगत और निर्गत के लिए अलग-अलग प्रकार रखें। उदाहरण के लिए, अनुरोधों के लिए बिना id वाला CreateTodo और प्रतिक्रियाओं के लिए पूरा Todo। इससे आपका API आंतरिक मॉडल से अलग बना रहता है।

struct CreateTodo: Content {
    var title: String
}
struct TodoResponse: Content {
    var id: Int
    var title: String
}

क्वेरी स्ट्रिंग एन्कोड करना

वही Content तंत्र req.query.decode(_:) के माध्यम से क्वेरी स्ट्रिंग को किसी संरचना में डिकोड करता है, जो filter और पृष्ठांकन पैरामीटर के लिए आदर्श है।

struct Page: Content {
    var page: Int?
    var size: Int?
}
app.get("items") { req -> String in
    let p = try req.query.decode(Page.self)
    return "page=" + String(p.page ?? 1)
}

Content के साथ कस्टम स्थिति लौटाना

मुख्य भाग और स्थिति दोनों पर नियंत्रण पाने के लिए एक Response बनाएँ और उसमें सामग्री एन्कोड करें, या टपल-जैसी संरचना लौटाएँ। नीचे JSON मुख्य भाग के साथ 201 सृजित स्थिति सेट की गई है।

app.post("todo") { req -> Response in
    let todo = try req.content.decode(Todo.self)
    let res = Response(status: .created)
    try res.content.encode(todo)
    return res
}

त्वरित जाँच: Content और JSON

अपने एन्कोडिंग ज्ञान का परीक्षण करें।

पुनरावलोकन: Content और JSON एन्कोडिंग

आपने सीखा कि Vapor में डेटा नेटवर्क के माध्यम से कैसे भेजा जाता है:

  • मॉडल को Content के अनुरूप बनाएँ (जो Codable पर आधारित है)।
  • JSON एन्कोड करने के लिए सामग्री लौटाएँ; मुख्य भाग पढ़ने के लिए req.content.decode का उपयोग करें।
  • CodingKeys और ContentConfiguration से कुंजियों और तिथियों को अनुकूलित करें।
  • Validatable से आगत का सत्यापन करें और अनुरोध/प्रतिक्रिया के लिए अलग डेटा प्रकार रखने पर विचार करें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “कंटेंट और JSON एन्कोडिंग” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कंटेंट और JSON एन्कोडिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कंटेंट और JSON एन्कोडिंग” में मैं क्या सीखूँगा?

अनुरोध और प्रतिक्रिया के बॉडी को डिकोड और एन्कोड कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“कंटेंट और JSON एन्कोडिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. रूटिंग और अनुरोध सँभालना
  2. कंटेंट और JSON एन्कोडिंग
  3. Fluent ORM और मॉडल
  4. मिडलवेयर और प्रमाणीकरण
← Swift Academy पर वापस जाएँ