แบบฝึกหัด - สร้างโครงการ 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 มีเทอร์มินัลแบบรวมที่ทําให้การสร้างโครงการใหม่เป็นเรื่องง่าย ถ้าคุณไม่ต้องการใช้ตัวแก้ไขโค้ด คุณสามารถเรียกใช้คําสั่งในโมดูลนี้ในเทอร์มินัล

  1. ใน Visual Studio Code ให้เลือก ไฟล์ >เปิดโฟลเดอร์

  2. สร้างโฟลเดอร์ใหม่ที่ชื่อว่า ContosoPizza ในตําแหน่งที่ตั้งที่คุณเลือก จากนั้นเลือกเลือกโฟลเดอร์

  3. เปิดเทอร์มินัลที่รวมจาก Visual Studio Code โดยการเลือก ดู>เทอร์มินัล จากเมนูหลัก

  4. ในหน้าต่างเทอร์มินัล ให้คัดลอกและวางคําสั่งต่อไปนี้:

    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
    
  5. ตรวจสอบไฟล์และไดเรกทอรีต่อไปนี้:

    Name คำอธิบาย
    Controllers/ ประกอบด้วยคลาสที่มีวิธีการสาธารณะที่แสดงเป็นจุดสิ้นสุด HTTP
    Program.cs กําหนดค่าบริการและไปป์ไลน์คําขอ HTTP ของแอป และประกอบด้วยจุดเข้าใช้งานที่ได้รับการจัดการของแอป
    ContosoPizza.csproj ประกอบด้วยเมตาดาต้าการกําหนดค่าสําหรับโครงการ
    ContosoPizza.http มีการกําหนดค่าเพื่อทดสอบ REST API โดยตรงจาก Visual Studio Code

สร้างและทดสอบ API เว็บ

  1. เรียกใช้คําสั่ง .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 คําสั่งอีกครั้ง

  2. เปิดเว็บเบราว์เซอร์ และไปที่:

    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 ติดตั้งอยู่

  1. เปิดไฟล์ ContosoPizza.http

    ในบาง ID ไฟล์นี้ถูกกําหนดค่าไว้ล่วงหน้าด้วยตัวแปร @ContosoPizza_HostAddressและรับคําสั่งที่เรียก /weatherforecast/ ที่ยอมรับ application/json

  2. ถ้ามีอยู่ในไฟล์ของคุณ เลือกคําสั่ง ส่งคําขอ เหนือ 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

  1. เปิดเทอร์มินัลรวมใหม่จาก Visual Studio Code โดยการเลือก เทอร์มินัล>ใหม่เทอร์มินัล จากเมนูหลัก จากนั้นเรียกใช้คําสั่งต่อไปนี้:

    dotnet tool install -g Microsoft.dotnet-httprepl
    

    คําสั่งก่อนหน้าติดตั้งเครื่องมือบรรทัดคําสั่ง .NET HTTP Read-Eval-Print Loop (REPL) ที่คุณใช้เพื่อส่งคําขอ HTTP ไปยัง API เว็บ

  2. เชื่อมต่อไปยัง API เว็บ โดยการเรียกใช้คําสั่งต่อไปนี้:

    httprepl https://localhost:{PORT}
    

    อีกวิธีหนึ่งคือ เรียกใช้คําสั่งต่อไปนี้ตลอดเวลาในขณะที่ HttpRepl กําลังทํางาน:

    connect https://localhost:{PORT}
    

    เคล็ดลับ

    HttpReplถ้าเครื่องมือเตือนว่าไม่สามารถค้นหาคําอธิบาย OpenAPI สาเหตุที่เป็นไปได้มากที่สุดคือใบรับรองการพัฒนาที่ไม่น่าเชื่อถือ HttpRepl จําเป็นต้องมีการเชื่อมต่อที่เชื่อถือได้ ก่อนที่คุณจะสามารถดําเนินการต่อได้ คุณต้องกําหนดค่าระบบของคุณเพื่อเชื่อถือใบรับรอง devdotnet dev-certs https --trust

  3. สํารวจจุดสิ้นสุดที่พร้อมใช้งานโดยการเรียกใช้คําสั่งต่อไปนี้:

    ls
    

    คําสั่งก่อนหน้าตรวจพบ API ทั้งหมดที่พร้อมใช้งานบนจุดสิ้นสุดที่เชื่อมต่ออยู่และแสดงรายการเหล่านั้น ดังในผลลัพธ์ต่อไปนี้:

    https://localhost:{PORT}/> ls
    .                 []
    WeatherForecast   [GET] 
    
  4. ไปที่จุดสิ้นสุด WeatherForecast โดยการเรียกใช้คําสั่งต่อไปนี้:

    cd WeatherForecast
    

    คําสั่งก่อนหน้าแสดงผลลัพธ์ของ API ที่พร้อมใช้งานสําหรับจุดสิ้นสุดการ WeatherForecast:

    https://localhost:{PORT}/> cd WeatherForecast
    /WeatherForecast    [GET]
    
  5. ทําการร้องขอ 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"
        },
        // ..
    ]
    
  6. จบเซสชันปัจจุบัน HttpRepl โดยใช้คําสั่งต่อไปนี้:

    exit
    
  7. กลับไปยัง dotnet เทอร์มินัลในรายการดรอปดาวน์ใน Visual Studio Code ปิด API เว็บโดยการเลือก CTRL + C บนแป้นพิมพ์ของคุณ

ตอนนี้คุณได้สร้าง API เว็บแล้ว เราสามารถปรับเปลี่ยนตามความต้องการของ API เว็บพิซซ่าได้