$ mify init todo-app $ cd todo-app
$ mify add service todo-backend
. ├── go-services │ ├── cmd │ │ ├── dev-runner │ │ │ └── main.go │ │ └── todo-backend │ │ ├── Dockerfile │ │ └── main.go │ ├── go.mod │ ├── go.sum │ └── internal │ ├── pkg │ │ └── generated │ │ ├── configs │ │ │ └── ... │ │ ├── consul │ │ │ └── ... │ │ ├── logs │ │ │ └── ... │ │ └── metrics │ │ └── ... │ └── todo-backend │ ├── app │ │ ├── request_extra.go │ │ ├── router │ │ │ └── router.go │ │ └── service_extra.go │ └── generated │ ├── api | | └── ... │ ├── app │ │ └── ... │ ├── apputil │ │ └── ... │ └── core │ └── ... ├── schemas │ └── todo-backend │ ├── api │ │ └── api.yaml │ └── service.mify.yaml └── workspace.mify.yaml
Mify सामान्य गो लेआउट में से एक का अनुसरण करता है, जो एक रिपॉजिटरी में कई सेवाओं के लिए उपयुक्त है। internal/pkg/generated
में कॉन्फ़िगरेशन, लॉग और मेट्रिक्स के लिए सामान्य पुस्तकालय हैं जिन्हें कई सेवाओं के लिए पुन: उपयोग किया जा सकता है। आपकी सेवा गो-टू निर्देशिका internal/todo-backend
में है।
आप schemas/todo-backend/api/api.yaml
फ़ाइल में टूडू-बैकएंड के लिए ओपनएपीआई स्कीमा पा सकते हैं। कार्यक्षेत्र की जड़ में स्कीमा निर्देशिका एक ऐसा स्थान है जहाँ Mify से संबंधित सभी सेवा कॉन्फ़िगरेशन संग्रहीत हैं।
POST /todos
।PUT,GET,DELETE /todos/{id}
उन्हें अपडेट करने, पुनर्प्राप्त करने और हटाने के लिए।
पिछले स्कीमा को इस स्कीमा से बदलें और mify generate
चलाएँ। हर बार जब आप स्कीमा अपडेट करते हैं तो आप इसे चला सकते हैं और यह सभी बदली हुई सामग्री को पुन: उत्पन्न करेगा।
$ cd go-services $ go mod tidy $ go run ./cmd/todo-backend
आप starting api server
में सर्विस पोर्ट देख सकते हैं, इसे पोस्टमैन पर कॉपी कर सकते हैं, और कुछ एपीआई हैंडलर को कॉल करने का प्रयास कर सकते हैं:
आप देख सकते हैं कि हैंडलर ने कुछ भी नहीं लौटाया, जो अपेक्षित है क्योंकि जैसा कि त्रुटि से पता चलता है, यह अभी तक लागू नहीं हुआ है।
सबसे पहले, हमें टूडू नोट के लिए एक मॉडल बनाने की जरूरत है, हम इसे domain
पैकेज में रखेंगे
go-services/internal/todo-backend/domain/todo.go
में :
यह भंडारण के लिए इंटरफेस को परिभाषित करने के लिए भी एक अच्छी जगह है, जो एप्लिकेशन से दृढ़ता तर्क को अलग करने के लिए उपयोगी है। इस ट्यूटोरियल में, हम मेमोरी में मॉक स्टोरेज का उपयोग करेंगे, लेकिन Mify पोस्टग्रेज का भी समर्थन करता है, जिसे हम बाद में एक अनुवर्ती लेख में जोड़ सकते हैं। go-services/internal/todo-backend/storage/todo_mem.go:
POST विधि के लिए go-services/internal/todo-backend/handlers/todos/service.go
, और
दूसरों के लिए go-services/internal/todo-backend/handlers/todos/id/service.go
go-services/internal/todo-backend/handlers/todos/service.go
:
import ( "net/http" "strconv" "example.com/namespace/todo-app/go-services/internal/todo-backend/domain" "example.com/namespace/todo-app/go-services/internal/todo-backend/generated/api" "example.com/namespace/todo-app/go-services/internal/todo-backend/generated/apputil" "example.com/namespace/todo-app/go-services/internal/todo-backend/generated/core" "example.com/namespace/todo-app/go-services/internal/todo-backend/handlers" )
go-services/internal/todo-backend/handlers/todos/id/service.go
:
import ( "errors" "fmt" "net/http" "strconv" "example.com/namespace/todo-app/go-services/internal/todo-backend/domain" "example.com/namespace/todo-app/go-services/internal/todo-backend/generated/api" "example.com/namespace/todo-app/go-services/internal/todo-backend/generated/apputil" "example.com/namespace/todo-app/go-services/internal/todo-backend/generated/core" "example.com/namespace/todo-app/go-services/internal/todo-backend/handlers" "example.com/namespace/todo-app/go-services/internal/todo-backend/storage" )
go-services/internal/todo-backend/handlers/common.go
:
जांचें कि क्या इसे GET अनुरोध के साथ जोड़ा गया है:
इसे PUT अनुरोध के साथ अपडेट करें:
इसे हटा:
और यह जांचने के लिए एक बार फिर से GET चलाएँ कि क्या इसे हटा दिया गया था: