2016-01-30 6 views
9

बिल्कुल सही में एक वेब/http सर्वर बनाने के लिए एक नया स्विफ्ट फ्रेमवर्क है। दस्तावेज़ीकरण अभी तक नहीं है और मुझे स्क्रैच से एक नई परियोजना बनाने में परेशानी है। मुझे नहीं पता कि आयात करने के लिए कौन से ढांचे आवश्यक हैं और कौन सा ऐप का प्रवेश बिंदु है। main.swift आदि ...एक्सकोड में स्क्रैच (स्विफ्ट सर्वर) से एक नई बिल्कुल सही परियोजना कैसे बनाएं?

मैं एक नया xcworkspace बनाना चाहता हूं जिसमें मेरा प्रोजेक्ट "हेल्लो वर्ल्ड सर्वर" होगा।

समस्याएं मैं से निपटने के लिए कोशिश कर रहा हूँ:

  • कौन सा चौखटे शामिल किया जाना चाहिए?
  • मुझे एक सही सर्वर कैसे बनाना चाहिए, ऐप का प्रवेश बिंदु क्या है?
  • "हैलो" रूट कैसे बनाएं जो "हैलो वर्ल्ड संदेश" के साथ प्रतिक्रिया करता है?
  • मुझे सर्वर के लिए लक्ष्य कैसे बनाना चाहिए और आखिरकार सर्वर चलाएं?

उत्तर

5

मैं इस बारे में "हैलो वर्ल्ड" गाइड लिखने में कामयाब रहा। http://code-me-dirty.blogspot.co.uk/2016/02/creating-perfect-swift-server.html

संक्षेप आप इस तरह आगे बढ़ने के लिए की जरूरत में:

  1. क्लोन मूल परियोजना
  2. एक नया कार्यस्थान
  3. बनाएँ नई परियोजना
  4. आयात PerfectLib.xcodeproject & आयात PerfectServer बनाएँ। xcodeproject लेकिन
  5. कॉपी न करें PerfectServer HTTP App
  6. लॉन्च करने के लिए अपनी प्रोजेक्ट योजना सेट अप करें
  7. लिंक PerfectLib "लिंक किए गए फ़्रेमवर्क और पुस्तकालय" खंड
  8. सेटअप अपने ढांचे लक्ष्य * के लिए सेटिंग्स का निर्माण onn
  9. बनाएं PerfectHandlers.swift और पेस्ट (बेहतर लग रहा है पाने के लिए लिख) निम्नलिखित कोड

    import PerfectLib 
    //public method that is being called by the server framework to initialise your module. 
    public func PerfectServerModuleInit() { 
    
        // Install the built-in routing handler. 
        // Using this system is optional and you could install your own system if desired. 
        Routing.Handler.registerGlobally() 
    
        // Create Routes 
        Routing.Routes["GET", ["/", "index.html"] ] = { (_:WebResponse) in return IndexHandler() } 
    
        // Check the console to see the logical structure of what was installed. 
        print("\(Routing.Routes.description)") 
    } 
    
    //Create a handler for index Route 
    class IndexHandler: RequestHandler { 
    
        func handleRequest(request: WebRequest, response: WebResponse) { 
         response.appendBodyString("Hello World") 
         response.requestCompletedCallback() 
        } 
    } 
    

फिर आप दौड़ने के लिए तैयार हैं। मेरे ब्लॉग पर मेरे पास एक लंबा, अधिक विस्तृत संस्करण है और यदि आवश्यक हो तो मैं यहां अपडेट करूंगा।

सेटिंग बिल्ड

  • तैनाती स्थान: हाँ
  • स्थापना बिल्ड उत्पाद स्थान: $ (CONFIGURATION_BUILD_DIR)
  • स्थापना निर्देशिका:/PerfectLibraries
  • छोड़ें स्थापित करें: कोई
0

मैं यदि आप एक समाधान या नहीं मिला है यकीन नहीं है, लेकिन यह मैं क्या किया है:

'नल ट्रैकर' ऐप्लिकेशन, कोई एप्लिकेशन बिल्कुल सही पुस्तकालयों लिखा है तो भी प्रलेखन अगर अभी तक तैयार नहीं है आप अभी भी ऐप को विच्छेदन कर सकते हैं। मैंने ऐप, और कक्षाओं/विधियों का नाम बदल दिया। एक एकल index.html है, जिसे मैं 'www' रूट में ले गया, और उसके बाद मानक लेआउट को आजमाने और बनाने के लिए TTHandler के साथ दृश्य को दोहराया। यह बहुत अच्छी तरह से काम नहीं करता है क्योंकि ढांचा बहुत छोटा है, लेकिन यह किया जा सकता है। मैं बहुत अधिक विशिष्ट होगा लेकिन मैं उस समय के लिए रेल में वापस चला गया क्योंकि मैं थोड़ी अधिक परिपक्व होने तक इंतजार करना चाहता हूं।

यह गड़बड़ करना मजेदार है, और मैं शायद अपनी खुद की लाइब्रेरी को सही ओएनसी फीचर इनोवेशन कैल्म्स के ऊपर लिखूंगा और मैं इसके साथ कुछ स्थिर कर सकता हूं।

+0

हाँ, यह एक रोमांचक परियोजना है। सुधार के लिए बहुत सी जगह है। –

4

मैं सिर्फ एक ट्यूटोरियल लिखा है जिसे मैं एक और समाधान के रूप में साझा करना चाहता हूं जो एक वेब सेवा बनाने के तरीके को रेखांकित करता है सही और एक ऐप के साथ बातचीत करने के लिए।

http://chrismanahan.com/creating-a-web-service-swift-perfect

सारांश

  1. आप एक कार्यक्षेत्र में अपनी परियोजना होना आवश्यक है। इस वर्कस्पेस में परफेक्टसेवर और परफेक्टलिब प्रोजेक्ट भी शामिल होना चाहिए।

workspace screenshot

  1. अपनी परियोजना में, एक नया OSX फ्रेमवर्क लक्ष्य बनाते हैं। यह आपके सर्वर लक्ष्य होगा

creating a new target

    दोनों अपने सर्वर लक्ष्य और आपके ऐप की लक्षित साथ
  1. लिंक PerfectLib (आप सर्वर के साथ एक अनुप्रयोग का निर्माण कर रहे हैं)

  2. परफेक्टसेवर HTTP ऐप के साथ लॉन्च करने के लिए अपने सर्वर की रन योजना संपादित करें।

edit scheme scheme with executable

  1. अपने सर्वर लक्ष्य के सेटिंग बिल्ड में निम्न निशानी नहीं लगाई:

    • छोड़ें स्थापित = नहीं
    • तैनाती स्थान = हाँ
    • स्थापना निर्देशिका =/बिल्कुल सही पुस्तकालय
    • स्थापना बिल्ड उत्पाद स्थान = $ (CONFIGURATION_BUILD_DIR)
  2. सर्वर के फ़ोल्डर में एक नई फ़ाइल बनाएं। यह फ़ाइल आने वाले अनुरोधों को संभाल लेगी।शामिल [का सबसे] निम्नलिखित:

    import PerfectLib 
    
    // This function is required. The Perfect framework expects to find this function 
    // to do initialization 
    public func PerfectServerModuleInit() { 
    
        // Install the built-in routing handler. 
        // This is required by Perfect to initialize everything 
        Routing.Handler.registerGlobally() 
    
        // These two routes are specific to the tutorial in the link above. 
        // This is where you would register your own endpoints. 
        // Take a look at the docs for the Routes API to better understand 
        // everything you can do here 
    
        // register a route for gettings posts 
        Routing.Routes["GET", "/posts"] = { _ in 
         return GetPostHandler() 
        } 
    
        // register a route for creating a new post 
        Routing.Routes["POST", "/posts"] = { _ in 
         return PostHandler() 
        } 
    } 
    
    class GetPostHandler: RequestHandler { 
        func handleRequest(request: WebRequest, response: WebResponse) { 
         response.appendBodyString("get posts") 
         response.requestCompletedCallback() 
        } 
    } 
    
    class PostHandler: RequestHandler { 
        func handleRequest(request: WebRequest, response: WebResponse) { 
         response.appendBodyString("creating post") 
         response.requestCompletedCallback() 
        } 
    } 
    

आप अपनी सेवा के विभिन्न पहलुओं निर्मित कर रहे हैं के रूप में, आप इसे कमांड लाइन में cURL का उपयोग करके Postman

तरह परीक्षण कर सकते हैं, या अन्य बाकी परीक्षण उपकरण

यदि आप गहरी गोताखोरी करना चाहते हैं और SQLite डेटाबेस के साथ एकीकृत करना सीखें या अपने नए सर्वर से बात करने वाले ऐप बनाएं, तो इस पोस्ट के शीर्ष पर ट्यूटोरियल देखें।

+0

आपकी मार्गदर्शिका के साथ निश्चित रूप से अच्छी नौकरी। आप केवल PerfectLib का उपयोग करने का दृष्टिकोण ले रहे हैं जो कुछ पसंद करेंगे। मेरा दृष्टिकोण ढांचे का जितना संभव हो उतना उपयोग कर रहा है। PerfectServer HTTP ऐप सहित। हालांकि, आप सीधे स्टैक ओवरफ्लो में प्रश्न का उत्तर नहीं देते हैं। क्या आप कृपया स्टैक ओवरफ्लो में विस्तृत जानकारी देंगे? अन्यथा आपका उत्तर गैर रचनात्मक के रूप में ध्वजांकित हो सकता है क्योंकि बाहरी लिंक अतिरिक्त होने चाहिए और मुख्य उत्तर नहीं। चीयर्स –

+1

वूप्स हाँ आप लोग सही हैं। मैं उचित उत्तर – Chris

+0

दोनों समाधानों को शामिल करने के लिए अपना उत्तर अपडेट करूंगा। यह सीधे ParfectLib का उपयोग कर रहा है, इसलिए इसे skinnier माना जा सकता है। मेरा परफेक्टसेवर HTTP ऐप का उपयोग कर रहा है ताकि आपको स्वाद तंत्र और मॉड्यूल लोडर तक पहुंच प्राप्त हो। अपना जहर उठाओ। –

0

बस अपने Git भंडार के लिए नमूना-परियोजनाओं में से एक से सभी फ़ाइलों की प्रतिलिपि: https://github.com/PerfectExamples

अपने प्रोजेक्ट के नाम करने के लिए सभी फ़ाइलें (आप कॉपी करने के बाद) में example_project_name का नाम बदलें।

टर्मिनल रन

swift package generate-xcodeproj 

में

और आप की आवश्यकता नाम के साथ एक बिल्कुल सही परियोजना मिल जाएगा।

3

मैं टेम्पलेट्स से दूर रहने की सलाह दूंगा, जैसा कि अन्य ने सुझाया है, और खुद को एक स्वच्छ परियोजना बनाते हैं।

इस फ़ोल्डर संरचना बनाएँ:

MyAPI 
├── Package.swift 
└── Sources 
    └── main.swift 

फिर, Package.swift फ़ाइल

import PackageDescription 

let package = Package(
    name: "MyAPI", 
    targets: [], 
    dependencies: [ 
     .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2) 
    ] 
) 

और main.swift फ़ाइल में:

import PerfectHTTP 
import PerfectHTTPServer 

do { 

    let route = Route(method: .get, uri: "/hello", handler: { (request: HTTPRequest, response: HTTPResponse) in 
     response.appendBody(string: "world!") 
     response.completed() 
    }) 

    try HTTPServer.launch(.server(name: "localhost", port: 8080, routes: [route])) 

} catch { 
    fatalError("\(error)") 
} 

पर जाएं कमांड लाइन और रन:

swift package generate-xcodeproj 

ओपन उत्पन्न प्रोजेक्ट फाइल:

MyAPI.xcodeproj 

बदलें सक्रिय योजना है, तो निर्माण और चलाएँ: सफारी में

enter image description here

ओपन:

http://localhost:8080/hello 
+0

पर कोई ट्यूटोरियल ऐसा लगता है कि यह स्विफ्ट 4 के लिए काम नहीं करता है, मैंने पैकेज.swift को .package (url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git" से: "2.0। 0 ") और सफलतापूर्वक 'स्विफ्ट पैकेज अपडेट' और 'स्विफ्ट पैकेज जेनरेट-एक्सकोडप्रोज' चलाने में कामयाब रहा लेकिन मुझे आयात प्रयास पर त्रुटि मिल रही है: ऐसा कोई मॉड्यूल 'परफेक्टलिब' – BergP

संबंधित मुद्दे