Dotnet-Api-Boilerplate
โครงการ. .Net 5.0 Webapi Boilerplate / Template Project ที่เก็บ, swagger, mapper, serilog และนำไปใช้มากขึ้น
เป้าหมายของโครงการนี้คือการเริ่มต้นให้กับ. NET WebAPI ของคุณโดยใช้รูปแบบและเทคโนโลยีที่ใช้กันมากที่สุดสำหรับ API ที่พักผ่อนใน. NET ทำให้การทำงานของคุณง่ายขึ้น
วิธีการวิ่ง
- ใช้เทมเพลตนี้ (GitHub) หรือโคลน/ดาวน์โหลดไปยังสถานที่ทำงานในพื้นที่ของคุณ
- ดาวน์โหลด. NET SDK ล่าสุดและ Visual Studio/Code
แบบสแตนด์อโลน
- คุณอาจต้องใช้อินสแตนซ์ที่ทำงานอยู่ของ MSSQL โดยมีการเริ่มต้นการย้ายถิ่นที่เหมาะสม
- คุณสามารถเรียกใช้เพียงฐานข้อมูลบน Docker สำหรับสิ่งนั้นคุณต้องเปลี่ยนสตริงการเชื่อมต่อของคุณเป็น "เซิร์ฟเวอร์ = 127.0.0.1; ฐานข้อมูล = master; user = sa; รหัสผ่าน = yourpassword123" และเรียกใช้คำสั่งต่อไปนี้:
docker-compose up -d db-server การทำเช่นนั้นแอปพลิเคชันจะสามารถไปถึงคอนเทนเนอร์ของเซิร์ฟเวอร์ DB ได้ - หากคุณต้องการคุณสามารถเปลี่ยน DatabaseExtension เพื่อใช้ useInMemoryDatabase แทน MSSQL
- ไปที่โฟลเดอร์ src/boilerplate.api และเรียกใช้
dotnet run หรือใน Visual Studio ตั้งค่าโครงการ API เป็นการเริ่มต้นและเรียกใช้เป็นคอนโซลหรือนักเทียบท่า (ไม่ใช่ IIS) - เยี่ยมชม http: // localhost: 5000/api-docs หรือ https: // localhost: 5001/api-docs เพื่อเข้าถึงแอปพลิเคชันของแอปพลิเคชัน
นักเทียบท่า
- เรียกใช้
docker-compose up -d ในไดเรกทอรีรูทหรือใน Visual Studio ตั้งค่าโครงการ Docker-compose เป็นการเริ่มต้นและเรียกใช้ สิ่งนี้ควรเริ่มต้นแอปพลิเคชันและ db
- สำหรับ Docker-compose คุณควรเรียกใช้คำสั่งนี้ในโฟลเดอร์รูท:
dotnet dev-certs https -ep https/aspnetapp.pfx -p yourpassword แทนที่ "yourpassword" ด้วยสิ่งอื่นในคำสั่งนี้และไฟล์ docker.override.yml สิ่งนี้สร้างใบรับรอง HTTPS
- เยี่ยมชม http: // localhost: 5000/api-docs หรือ https: // localhost: 5001/api-docs เพื่อเข้าถึงแอปพลิเคชันของแอปพลิเคชัน
การทดสอบกำลังดำเนินการ
ในโฟลเดอร์รูทให้เรียกใช้ dotnet test คำสั่งนี้จะพยายามค้นหาโครงการทดสอบทั้งหมดที่เกี่ยวข้องกับไฟล์ SLN
โครงการนี้มี:
- swaggerui
- entityframework
- ผู้ใช้งานอัตโนมัติ
- พื้นที่เก็บข้อมูลทั่วไป (เพื่อบูตที่เก็บถ่านหินได้อย่างง่ายดาย)
- Serilog พร้อมการบันทึกคำขอและอ่างล้างมือที่กำหนดค่าได้ง่าย
- . การฉีดพึ่งพา
- การกรองทรัพยากร
- การบีบอัดการตอบสนอง
- CI (การกระทำของ GitHub)
- การทดสอบหน่วย
- การทดสอบการรวม
- การสนับสนุนคอนเทนเนอร์ด้วย Docker และ Docker-compose
โครงสร้างโครงการ
- บริการ
- โฟลเดอร์นี้จัดเก็บ APIs ของคุณและโครงการใด ๆ ที่ส่งข้อมูลไปยังผู้ใช้ของคุณ
- Boilerplate.api
- นี่คือโครงการ API หลัก นี่คือตัวควบคุมและการเริ่มต้นทั้งหมดสำหรับ API ที่จะใช้
- นักเทียบท่า
- โครงการนี้มีอยู่เพื่อให้คุณเรียกใช้ compose นักเทียบท่าด้วย Visual Studio มันมีการอ้างอิงถึงไฟล์ compose นักเทียบท่าและจะสร้างการพึ่งพาโครงการทั้งหมดและเรียกใช้
- แอปพลิเคชัน
- โฟลเดอร์นี้จัดเก็บการแปลงข้อมูลทั้งหมดระหว่าง API และเลเยอร์โดเมนของคุณ นอกจากนี้ยังมีตรรกะทางธุรกิจของคุณ
- โดเมน
- โฟลเดอร์นี้มีโมเดลธุรกิจของคุณ enums และอินเทอร์เฟซทั่วไป
- Boilerplate.domain.core
- มีเอนทิตีฐานสำหรับเอนทิตีโดเมนอื่น ๆ ทั้งหมดรวมถึงอินเทอร์เฟซสำหรับการใช้งานที่เก็บ
- Boilerplate.domain
- อินฟาเอ
- โฟลเดอร์นี้มีที่เก็บข้อมูลทั้งหมดบริบทฐานข้อมูลสิ่งใดก็ตามที่เข้าถึงได้สำหรับข้อมูลภายนอก
- โครงสร้างพื้นฐานโครงสร้างพื้นฐาน
- โครงการนี้มี DBContext การใช้งานทั่วไปของรูปแบบที่เก็บและที่เก็บฮีโร่ (คลาสโดเมน)
การนำไปใช้กับโครงการของคุณ
- ลบ/เปลี่ยนชื่อสิ่งที่เกี่ยวข้องกับฮีโร่ทั้งหมดตามความต้องการของคุณ
- เปลี่ยนชื่อโซลูชันโครงการเนมสเปซและชุดกฎให้คุณใช้งาน
- เปลี่ยน DockerFile และ Docker-compose.yml เป็นชื่อ CSPROJ/โฟลเดอร์ใหม่ของคุณ
- ให้ repo นี้เป็นดารา!
การอพยพ
ในการเรียกใช้การอพยพในโครงการนี้ให้เรียกใช้คำสั่งต่อไปนี้ในโฟลเดอร์รูท:
-
dotnet ef migrations add InitialCreate --startup-project .srcBoilerplate.Api --project .srcBoilerplate.Infrastructure
คำสั่งนี้จะตั้งค่า entrypoint สำหรับการโยกย้าย (รับผิดชอบในการเลือก dbprovider {sqlserver, mysql ฯลฯ } และสตริงการเชื่อมต่อ) และโครงการเองจะเป็นโครงสร้างพื้นฐานซึ่งเป็นที่ที่ dbcontext คือ
ถ้าคุณชอบให้มันเป็นดารา
หากเทมเพลตนี้มีประโยชน์สำหรับคุณหรือถ้าคุณเรียนรู้บางสิ่งโปรดให้ดาวเป็นดาว!
ขอบคุณ
โครงการนี้มีอิทธิพลอย่างมากจาก https://github.com/lkurzyniec/netcore-boilerplate และ https://github.com/eduardopires/equinoxproject หากคุณมีเวลาโปรดไปที่ repos เหล่านี้และให้ดาวพวกเขาด้วย!
เกี่ยวกับ
แผ่นความเดือดร้อน/เทมเพลตนี้ได้รับการพัฒนาโดย Yan Pitangui ภายใต้ใบอนุญาต MIT