แบบฝึกหัด - สร้างโครงการ API เว็บ
โมดูลนี้ใช้ .NET 8.0 SDK ตรวจสอบให้แน่ใจว่าคุณมีการติดตั้ง .NET 8.0 โดยการเรียกใช้คําสั่งต่อไปนี้ในเทอร์มินัลคําสั่งที่คุณต้องการ:
dotnet --list-sdks
ผลลัพธ์จะคล้ายกับตัวอย่างต่อไปนี้ปรากฏขึ้น:
6.0.317 [C:\Program Files\dotnet\sdk]
7.0.401 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
ตรวจสอบให้แน่ใจว่าเวอร์ชันที่เริ่มต้นด้วย 8 อยู่ในรายการ หากไม่มีอยู่ในรายการหรือไม่พบคําสั่ง ติดตั้ง .NET 8.0 SDK ล่าสุด
สร้างและสํารวจโครงการ API เว็บ
หากต้องการตั้งค่าโครงการ .NET เพื่อทํางานกับ API เว็บ เราจะใช้ Visual Studio Code Visual Studio Code มีเทอร์มินัลแบบรวมที่ทําให้การสร้างโครงการใหม่เป็นเรื่องง่าย ถ้าคุณไม่ต้องการใช้ตัวแก้ไขโค้ด คุณสามารถเรียกใช้คําสั่งในโมดูลนี้ในเทอร์มินัล
ใน Visual Studio Code ให้เลือก ไฟล์ >เปิดโฟลเดอร์
สร้างโฟลเดอร์ใหม่ที่ชื่อว่า ContosoPizza ในตําแหน่งที่ตั้งที่คุณเลือก จากนั้นเลือกเลือกโฟลเดอร์
เปิดเทอร์มินัลที่รวมจาก Visual Studio Code โดยการเลือก ดู>เทอร์มินัล จากเมนูหลัก
ในหน้าต่างเทอร์มินัล ให้คัดลอกและวางคําสั่งต่อไปนี้:
dotnet new webapi -controllers -f net8.0คําสั่งนี้สร้างไฟล์สําหรับโครงการ API เว็บพื้นฐานที่ใช้ตัวควบคุม พร้อมกับไฟล์โครงการ C# ที่ชื่อ ว่า ContosoPizza.csproj ที่ส่งกลับรายการของการพยากรณ์อากาศ ถ้าคุณได้รับข้อผิดพลาด ตรวจสอบให้แน่ใจว่าคุณมี .NET 8 SDK ติดตั้งอยู่
สําคัญ
โครงการ API เว็บได้รับการรักษาความปลอดภัย
httpsตามค่าเริ่มต้น ถ้าคุณมีปัญหา ให้กําหนดค่าใบรับรองการพัฒนา ASP.NET Core HTTPSคุณอาจได้รับพร้อมท์จาก Visual Studio Code เพื่อเพิ่มแอสเซทเพื่อดีบักโครงการ เลือก ใช่ ในกล่องโต้ตอบ
คําสั่งใช้เทมเพลตโครงการหลัก ASP.NET ที่เรียกว่า webapi เพื่อยกระดับโครงการ API เว็บที่ใช้ C# ไดเรกทอรี ContosoPizza จะถูกสร้างขึ้น ไดเรกทอรีนี้ประกอบด้วย ASP.NET โครงการหลักที่เรียกใช้บน .NET ชื่อโครงการตรงกับ ContosoPizza ชื่อไดเรกทอรี
ในตอนนี้คุณควรสามารถเข้าถึงไฟล์และไดเรกทอรีเหล่านี้ได้:
-| Controllers -| obj -| Properties -| appsettings.Development.json -| appsettings.json -| ContosoPizza.csproj -| ContosoPizza.http -| Program.cs -| WeatherForecast.csตรวจสอบไฟล์และไดเรกทอรีต่อไปนี้:
Name คำอธิบาย Controllers/ ประกอบด้วยคลาสที่มีวิธีการสาธารณะที่แสดงเป็นจุดสิ้นสุด HTTP Program.cs กําหนดค่าบริการและไปป์ไลน์คําขอ HTTP ของแอป และประกอบด้วยจุดเข้าใช้งานที่ได้รับการจัดการของแอป ContosoPizza.csproj ประกอบด้วยเมตาดาต้าการกําหนดค่าสําหรับโครงการ ContosoPizza.http มีการกําหนดค่าเพื่อทดสอบ REST API โดยตรงจาก Visual Studio Code
สร้างและทดสอบ API เว็บ
เรียกใช้คําสั่ง .NET Core CLI ต่อไปนี้ในเชลล์คําสั่ง:
dotnet runคําสั่งก่อนหน้า:
- ค้นหาตําแหน่งไฟล์โครงการที่ไดเรกทอรีปัจจุบัน
- เรียกใช้และติดตั้งการขึ้นต่อกันของโครงการที่จําเป็นใดๆ สําหรับโครงการนี้
- คอมไพล์รหัสโครงการ
- โฮสต์ API เว็บด้วยเว็บเซิร์ฟเวอร์ ASP.NET Core Kestrel ที่ทั้งจุดสิ้นสุด HTTP และ HTTPS
เลือกพอร์ตตั้งแต่ 5000 ถึง 5300 สําหรับ HTTP และจาก 7000 ถึง 7300 สําหรับ HTTPS เมื่อสร้างโครงการ คุณสามารถเปลี่ยนพอร์ตที่คุณใช้ในระหว่างการพัฒนาได้อย่างง่ายดายโดยการแก้ไขไฟล์ launchSettings.json ของโครงการ โมดูลนี้ใช้ URL ที่ปลอดภัย
localhostที่เริ่มต้นด้วยhttpsคุณควรได้รับผลลัพธ์คล้ายกับรายการต่อไปนี้ ซึ่งแสดงว่าแอปของคุณกําลังทํางานอยู่:
Building... info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:7294 info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5118 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Developmentถ้าคุณกําลังใช้แอปนี้บนเครื่องของคุณเอง คุณสามารถนําเบราว์เซอร์ไปยังลิงก์ HTTPS ที่แสดงในผลลัพธ์ (ในกรณีก่อนหน้า )
https://localhost:7294เพื่อดูหน้าผลลัพธ์ได้ โปรดจําพอร์ตนี้เนื่องจากคุณใช้ตลอดทั้งโมดูล{PORT}ที่มีการใช้งานสําคัญ
ตรวจสอบเอาต์พุตเทอร์มินัลถ้าคุณพบลักษณะการทํางานที่ไม่คาดคิด ถ้ารุ่นล้มเหลวหรือเกิดข้อผิดพลาดอื่น ๆ ข้อมูลของไฟล์บันทึกจะช่วยคุณแก้ไขปัญหา เมื่อคุณทําการเปลี่ยนแปลงโค้ด คุณจะต้องหยุด API ของเว็บโดยการเลือก CTRL + C บนแป้นพิมพ์และเรียกใช้
dotnet runคําสั่งอีกครั้งเปิดเว็บเบราว์เซอร์ และไปที่:
https://localhost:{PORT}/weatherforecastคุณควรเห็นผลลัพธ์ JSON ที่คล้ายกับตัวอย่างนี้:
[ { "date": "2021-11-09T20:36:01.4678814+00:00", "temperatureC": 33, "temperatureF": 91, "summary": "Scorching" }, { "date": "2021-11-09T20:36:01.4682337+00:00", "temperatureC": -8, "temperatureF": 18, "summary": "Cool" }, // ... ]
ตัวเลือก: สํารวจด้วย .http ไฟล์
ที่รวมอยู่ในโครงการคือ ContosoPizza.http ซึ่งเป็นไฟล์ที่ใช้ในการทดสอบจุดสิ้นสุด API ผ่านรูปแบบมาตรฐาน
.http ไฟล์ได้รับการสนับสนุนในหลายสภาพแวดล้อมการพัฒนารวม (IDEs) รวมถึง Visual Studio และภายใน Visual Studio Code ที่มีส่วนขยาย REST Client ติดตั้งอยู่
เปิดไฟล์ ContosoPizza.http
ในบาง ID ไฟล์นี้ถูกกําหนดค่าไว้ล่วงหน้าด้วยตัวแปร @ContosoPizza_HostAddressและรับคําสั่งที่เรียก /weatherforecast/ ที่ยอมรับ application/json
ถ้ามีอยู่ในไฟล์ของคุณ เลือกคําสั่ง ส่งคําขอ เหนือ GET ซึ่งส่งคําขอไปยังบริการที่กําลังทํางานอยู่
การเรียกใช้คําสั่งนี้จะเปิดหน้าต่างการตอบสนองด้วยเอาต์พุตคล้ายกับที่เราเห็นในเบราว์เซอร์:
HTTP/1.1 200 OK Connection: close Content-Type: application/json; charset=utf-8 Date: Wed, 17 Jan 2024 16:46:40 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": "2024-01-18", "temperatureC": -2, "temperatureF": 29, "summary": "Warm" }, { "date": "2024-01-19", "temperatureC": 24, "temperatureF": 75, "summary": "Chilly" }, // .. ]
ตัวเลือก: สํารวจ API ด้วย Command Line HTTP REPL
เปิดเทอร์มินัลรวมใหม่จาก Visual Studio Code โดยการเลือก เทอร์มินัล>ใหม่เทอร์มินัล จากเมนูหลัก จากนั้นเรียกใช้คําสั่งต่อไปนี้:
dotnet tool install -g Microsoft.dotnet-httpreplคําสั่งก่อนหน้าติดตั้งเครื่องมือบรรทัดคําสั่ง .NET HTTP Read-Eval-Print Loop (REPL) ที่คุณใช้เพื่อส่งคําขอ HTTP ไปยัง API เว็บ
เชื่อมต่อไปยัง API เว็บ โดยการเรียกใช้คําสั่งต่อไปนี้:
httprepl https://localhost:{PORT}อีกวิธีหนึ่งคือ เรียกใช้คําสั่งต่อไปนี้ตลอดเวลาในขณะที่
HttpReplกําลังทํางาน:connect https://localhost:{PORT}เคล็ดลับ
HttpReplถ้าเครื่องมือเตือนว่าไม่สามารถค้นหาคําอธิบาย OpenAPI สาเหตุที่เป็นไปได้มากที่สุดคือใบรับรองการพัฒนาที่ไม่น่าเชื่อถือHttpReplจําเป็นต้องมีการเชื่อมต่อที่เชื่อถือได้ ก่อนที่คุณจะสามารถดําเนินการต่อได้ คุณต้องกําหนดค่าระบบของคุณเพื่อเชื่อถือใบรับรอง devdotnet dev-certs https --trustสํารวจจุดสิ้นสุดที่พร้อมใช้งานโดยการเรียกใช้คําสั่งต่อไปนี้:
lsคําสั่งก่อนหน้าตรวจพบ API ทั้งหมดที่พร้อมใช้งานบนจุดสิ้นสุดที่เชื่อมต่ออยู่และแสดงรายการเหล่านั้น ดังในผลลัพธ์ต่อไปนี้:
https://localhost:{PORT}/> ls . [] WeatherForecast [GET]ไปที่จุดสิ้นสุด
WeatherForecastโดยการเรียกใช้คําสั่งต่อไปนี้:cd WeatherForecastคําสั่งก่อนหน้าแสดงผลลัพธ์ของ API ที่พร้อมใช้งานสําหรับจุดสิ้นสุดการ
WeatherForecast:https://localhost:{PORT}/> cd WeatherForecast /WeatherForecast [GET]ทําการร้องขอ
GETในHttpReplโดยใช้คําสั่งต่อไปนี้:getคําสั่งก่อนหน้าทําให้
GETคําขอคล้ายกับจุดสิ้นสุดในเบราว์เซอร์:HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Fri, 02 Apr 2021 17:31:43 GMT Server: Kestrel Transfer-Encoding: chunked [ { "date": 4/3/2021 10:31:44 AM, "temperatureC": 13, "temperatureF": 55, "summary": "Sweltering" }, { "date": 4/4/2021 10:31:44 AM, "temperatureC": -13, "temperatureF": 9, "summary": "Warm" }, // .. ]จบเซสชันปัจจุบัน
HttpReplโดยใช้คําสั่งต่อไปนี้:exitกลับไปยัง
dotnetเทอร์มินัลในรายการดรอปดาวน์ใน Visual Studio Code ปิด API เว็บโดยการเลือก CTRL + C บนแป้นพิมพ์ของคุณ
ตอนนี้คุณได้สร้าง API เว็บแล้ว เราสามารถปรับเปลี่ยนตามความต้องการของ API เว็บพิซซ่าได้