Haskell Language
वेब विकास
खोज…
नौकर
सर्वेंट टाइप-स्तर पर एपीआई घोषित करने के लिए एक पुस्तकालय है: और फिर
- सर्वर लिखें (नौकर का यह हिस्सा एक वेब फ्रेमवर्क माना जा सकता है),
- ग्राहक कार्य प्राप्त करें (हैस्केल में),
- अन्य प्रोग्रामिंग भाषाओं के लिए ग्राहक कार्य उत्पन्न करते हैं,
- अपने वेब अनुप्रयोगों के लिए प्रलेखन उत्पन्न करें
- और अधिक...
नौकर के पास एक संक्षिप्त रूप से शक्तिशाली एपीआई है। एक साधारण एपीआई कोड की बहुत कम लाइनों में लिखा जा सकता है:
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
import Data.Text
import Data.Aeson.Types
import GHC.Generics
import Servant.API
data SortBy = Age | Name
data User = User {
name :: String,
age :: Int
} deriving (Eq, Show, Generic)
instance ToJSON User -- automatically convert User to JSON
अब हम अपना एपीआई घोषित कर सकते हैं:
type UserAPI = "users" :> QueryParam "sortby" SortBy :> Get '[JSON] [User]
कि हम बेनकाब करना चाहते हैं जो राज्यों /users
के लिए GET
क्वेरी परम अनुरोध sortby
प्रकार के SortBy
और के प्रकार JSON लौट User
जवाब में।
अब हम अपने हैंडलर को परिभाषित कर सकते हैं:
-- This is where we'd return our user data, or e.g. do a database lookup
server :: Server UserAPI
server = return [User "Alex" 31]
userAPI :: Proxy UserAPI
userAPI = Proxy
app1 :: Application
app1 = serve userAPI server
और मुख्य विधि जो पोर्ट 8081
पर सुनती है और हमारे उपयोगकर्ता एपीआई की सेवा करती है:
main :: IO ()
main = run 8081 app1
नोट, स्टैक में सर्वेंट में बुनियादी एपीआई उत्पन्न करने के लिए एक टेम्पलेट है, जो बहुत जल्दी उठने और चलने के लिए उपयोगी है।
Yesod
यसोड प्रोजेक्ट को निम्नलिखित टेम्प्लेट का उपयोग करके stack new
के साथ बनाया जा सकता है:
-
yesod-minimal
। सरलतम यसोद मचान। -
yesod-mongo
। DB इंजन के रूप में MongoDB का उपयोग करता है। -
yesod-mysql
MySQL का उपयोग DB इंजन के रूप में करता है। -
yesod-postgres
। DBg इंजन के रूप में PostgreSQL का उपयोग करता है। -
yesod-postgres-fay
। DBg इंजन के रूप में PostgreSQL का उपयोग करता है। फ्रंट-एंड के लिए फे भाषा का उपयोग करता है। -
yesod-simple
। यदि आपको डेटाबेस की आवश्यकता नहीं है, तो अनुशंसित टेम्पलेट का उपयोग करें। -
yesod-sqlite
। DB इंजन के रूप में SQlite का उपयोग करता है।
yesod-bin
पैकेज yesod
निष्पादन योग्य प्रदान करता है, जिसका उपयोग विकास सर्वर को चलाने के लिए किया जा सकता है। ध्यान दें कि आप अपना एप्लिकेशन सीधे भी चला सकते हैं, इसलिए yesod
टूल वैकल्पिक है।
Application.hs
में कोड होते हैं जो हैंडलर के बीच अनुरोध भेजते हैं। यह डेटाबेस और लॉगिंग सेटिंग्स भी सेट करता है, यदि आपने उनका उपयोग किया है।
Foundation.hs
App
प्रकार को परिभाषित करता है, जिसे सभी हैंडलर्स के लिए एक वातावरण के रूप में देखा जा सकता है। HandlerT
मोनाद में होने के नाते, आप getYesod
फ़ंक्शन का उपयोग करके यह मान प्राप्त कर सकते हैं।
Import.hs
एक ऐसा मॉड्यूल है जो सामान्य रूप से उपयोग किए जाने वाले सामानों को फिर से निर्यात करता है।
Model.hs
में टेम्पलेट हास्केल होता है जो DB इंटरैक्शन के लिए उपयोग किए जाने वाले कोड और डेटा प्रकार उत्पन्न करता है। केवल तभी प्रस्तुत करें जब आप DB का उपयोग कर रहे हों।
config/models
वह जगह है जहाँ आप अपने DB स्कीमा को परिभाषित करते हैं। Model.hs
द्वारा उपयोग किया Model.hs
।
config/routes
वेब एप्लिकेशन के यूआरआई को परिभाषित करता है। मार्ग के प्रत्येक HTTP तरीके के लिए, आपको {method}{RouteR}
नामक हैंडलर बनाने की आवश्यकता होगी।
static/
निर्देशिका में साइट के स्थिर संसाधन होते हैं। ये Settings/StaticFiles.hs
मॉड्यूल द्वारा बाइनरी में संकलित होते हैं।
templates/
निर्देशिका में शेक्सपियर टेम्प्लेट होते हैं जो अनुरोधों को परोसते समय उपयोग किए जाते हैं।
अंत में, Handler/
डायरेक्टरी में ऐसे मॉड्यूल होते हैं जो मार्गों के लिए हैंडलर को परिभाषित करते हैं।
प्रत्येक हैंडलर IO पर आधारित एक हैंडलर HandlerT
क्रिया है। आप अनुरोध मापदंडों, उसके शरीर और अन्य जानकारी का निरीक्षण कर सकते हैं, runDB
साथ डीबी पर प्रश्न कर runDB
, मनमाना आईओ कर सकते हैं और उपयोगकर्ता को विभिन्न प्रकार की सामग्री वापस कर सकते हैं। HTML की सेवा करने के लिए, defaultLayout
फ़ंक्शन का उपयोग किया जाता है जो defaultLayout
टेम्प्लेट की स्वच्छ रचना की अनुमति देता है।