Hướng dẫn dotnet api with mysql - dotnet api với mysql

Bỏ qua nội dung chính

Trình duyệt này không còn được hỗ trợ.

Show

Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.

Hướng dẫn: Tạo API web với ASP.NET Core

  • Bài báo
  • 11/08/2022
  • 63 phút để đọc

Trong bài viết này

Bởi Rick Anderson và Kirk Larkin

Hướng dẫn này dạy những điều cơ bản của việc xây dựng API Web bằng cơ sở dữ liệu.

Tổng quan

Hướng dẫn này tạo ra API sau:

APISự mô tảYêu cầu cơ thểCơ thể phản ứng
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
3
Nhận tất cả các mặt hàng cần làmKhông cóMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDKhông cóMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDMảng các mặt hàng cần làmMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDMảng các mặt hàng cần làmKhông có
Mảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Không cóKhông có

Mảng các mặt hàng cần làm

Hướng dẫn dotnet api with mysql - dotnet api với mysql

[HttpPost] public async Task> PostTodoItem(TodoItem todoItem) { _context.TodoItems.Add(todoItem); await _context.SaveChangesAsync(); // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); } 4

Nhận một mục theo ID

  • Mục cần làm
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    5
  • Thêm một mục mới
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    6File menu, select New > Project.
  • Cập nhật một mục hiện tại & nbsp;
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    7 & nbsp; & nbsp;ASP.NET Core Web API template and select Next.
  • Xóa một mục & nbsp; & nbsp;Configure your new project dialog, name the project TodoApi and select Next.
  • Biểu đồ sau đây cho thấy thiết kế của ứng dụng.Additional information dialog:
    • Điều kiện tiên quyếtFramework is .NET 7.0 (or later).
    • Tạo một dự án webUse controllers(uncheck to use minimal APIs) is checked.
    • Visual StudioCreate.
  • Visual Studio Code

  • Visual Studio cho Mac

  • Từ menu Tệp, chọn New> Project.

    dotnet new webapi -o TodoApi
    cd TodoApi
    dotnet add package Microsoft.EntityFrameworkCore.InMemory
    code -r ../TodoApi
    

    Nhập API Web vào hộp tìm kiếm.

    • Chọn mẫu API API ASP.NET Core và chọn Tiếp theo.
    • Trong hộp thoại Cấu hình dự án mới của bạn, đặt tên cho dự án TODOAPI và chọn Tiếp theo.
  • Trong hộp thoại Thông tin bổ sung:Yes.

  • Xác nhận khung là .NET 7.0 (hoặc muộn hơn).File > New Project....

  • Xác nhận hộp kiểm cho bộ điều khiển sử dụng (bỏ chọn để sử dụng API tối thiểu) được kiểm tra.Choose a template for your new project dialog:

    • Chọn Tạo.Web and Console > App > API.
    • Mở thiết bị đầu cuối tích hợp.Continue.
  • Thay đổi thư mục (

    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    8) vào thư mục sẽ chứa thư mục dự án.Configure your new API dialog, make the following selections:

    • Chạy các lệnh sau:Target framework is .NET 7.0 (or later).
    • Những lệnh này:Use controllers (uncheck to use minimal APIs) is checked.
    • Tạo một dự án API Web mới và mở nó trong Visual Studio Code.Enable OpenAPI support is checked.
    • Mở thiết bị đầu cuối tích hợp.Continue.
  • Thay đổi thư mục (

    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    8) vào thư mục sẽ chứa thư mục dự án.

    • Chạy các lệnh sau: TodoApi
    • Những lệnh này: TodoApi
    • Visual StudioCreate.

Visual Studio Code

  • Visual Studio cho MacProject > Manage NuGet Packages...
  • Từ menu Tệp, chọn New> Project.Microsoft.EntityFrameworkCore.InMemory.
  • Nhập API Web vào hộp tìm kiếm.
  • Chọn mẫu API API ASP.NET Core và chọn Tiếp theo.Add Package
  • Trong hộp thoại Cấu hình dự án mới của bạn, đặt tên cho dự án TODOAPI và chọn Tiếp theo.Select Projects window, select Ok
  • Trong hộp thoại Thông tin bổ sung:License Agreement window, select Agree

Xác nhận khung là .NET 7.0 (hoặc muộn hơn).

Xác nhận hộp kiểm cho bộ điều khiển sử dụng (bỏ chọn để sử dụng API tối thiểu) được kiểm tra.

  • Mục cần làm
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    5
  • Thêm một mục mới

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
6

Cập nhật một mục hiện tại & nbsp;

Hướng dẫn dotnet api with mysql - dotnet api với mysql

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
7 & nbsp; & nbsp;Yes if you trust the IIS Express SSL certificate.

Xóa một mục & nbsp; & nbsp;

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Biểu đồ sau đây cho thấy thiết kế của ứng dụng.Yes if you agree to trust the development certificate.

Điều kiện tiên quyết

Tạo một dự án web

  • Visual Studio

    dotnet dev-certs https --trust
    

    Visual Studio Code

    Visual Studio cho Mac

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Biểu đồ sau đây cho thấy thiết kế của ứng dụng.Yes if you agree to trust the development certificate.

    Điều kiện tiên quyết

Điều kiện tiên quyết

Tạo một dự án web

  • Visual Studio
  • Visual Studio Code

Visual Studio cho MacDebug > Start Debugging to launch the app. Visual Studio for Mac launches a browser and navigates to

{
  "name": "walk dog",
  "isComplete": true
}
3, where
{
  "name": "walk dog",
  "isComplete": true
}
2 is a randomly chosen port number. There is no endpoint at
{
  "name": "walk dog",
  "isComplete": true
}
3 so the browser returns HTTP 404 Not Found. Append
{
  "name": "walk dog",
  "isComplete": true
}
6 to the URL,
{
  "name": "walk dog",
  "isComplete": true
}
7.

Từ menu Tệp, chọn New> Project.GET > Try it out > Execute. The page displays:

  • Nhập API Web vào hộp tìm kiếm.
  • Chọn mẫu API API ASP.NET Core và chọn Tiếp theo.
  • Trong hộp thoại Cấu hình dự án mới của bạn, đặt tên cho dự án TODOAPI và chọn Tiếp theo.
  • Trong hộp thoại Thông tin bổ sung:

Nếu trang Swagger không xuất hiện, hãy xem vấn đề GitHub này.

Swagger được sử dụng để tạo tài liệu hữu ích và các trang trợ giúp cho API Web. Hướng dẫn này tập trung vào việc tạo API Web. Để biết thêm thông tin về Swagger, hãy xem Tài liệu API API ASP.NET Core với Swagger / Openapi.

Sao chép và dán URL yêu cầu vào trình duyệt:

dotnet dev-certs https --trust
04Request URL in the browser:
dotnet dev-certs https --trust
04

JSON Tương tự như ví dụ sau được trả về:

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]

Thêm một lớp mô hình

Một mô hình là một tập hợp các lớp đại diện cho dữ liệu mà ứng dụng quản lý. Mô hình cho ứng dụng này là lớp

dotnet dev-certs https --trust
05.

  • Visual Studio
  • Visual Studio Code
  • Visual Studio cho Mac
  • Trong giải pháp Explorer, nhấp chuột phải vào dự án. Chọn Thêm> Thư mục mới. Đặt tên cho thư mục
    dotnet dev-certs https --trust
    
    06.Solution Explorer, right-click the project. Select Add > New Folder. Name the folder
    dotnet dev-certs https --trust
    
    06.
  • Nhấp chuột phải vào thư mục
    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp. Đặt tên cho lớp TODOITEM và chọn Thêm.Add > Class. Name the class TodoItem and select Add.
  • Thay thế mã mẫu bằng cách sau:
  • Thêm một thư mục có tên
    dotnet dev-certs https --trust
    
    06.
  • Thêm tệp
    dotnet dev-certs https --trust
    
    09 vào thư mục
    dotnet dev-certs https --trust
    
    06 với mã sau:
  • Nhấp vào Bấm vào dự án TODOAPI và chọn Thêm> Thư mục mới. Đặt tên cho thư mục

    dotnet dev-certs https --trust
    
    06.TodoAPI project and select Add > New Folder. Name the folder
    dotnet dev-certs https --trust
    
    06.

  • Bấm vào thư mục

    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp mới ...> Chung> Lớp trống.Add > New Class... > General > Empty Class.

  • Đặt tên cho lớp TODOITEM, sau đó chọn Tạo.Create.

  • Thay thế mã mẫu bằng cách sau:

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}

Thêm một thư mục có tên

dotnet dev-certs https --trust
06.

Thêm tệp

dotnet dev-certs https --trust
09 vào thư mục
dotnet dev-certs https --trust
06 với mã sau:

Nhấp vào Bấm vào dự án TODOAPI và chọn Thêm> Thư mục mới. Đặt tên cho thư mục dotnet dev-certs https --trust 06.

Bấm vào thư mục

dotnet dev-certs https --trust
06 và chọn Thêm> Lớp mới ...> Chung> Lớp trống.

  • Visual Studio
  • Visual Studio Code

Visual Studio cho Mac

  • Trong giải pháp Explorer, nhấp chuột phải vào dự án. Chọn Thêm> Thư mục mới. Đặt tên cho thư mục
    dotnet dev-certs https --trust
    
    06.Tools menu, select NuGet Package Manager > Manage NuGet Packages for Solution.
  • Nhấp chuột phải vào thư mục
    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp. Đặt tên cho lớp TODOITEM và chọn Thêm.Browse tab, and then enter
    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    9 in the search box.
  • Thay thế mã mẫu bằng cách sau:
  • Thêm một thư mục có tên
    dotnet dev-certs https --trust
    
    06.Project checkbox in the right pane and then select Install.

Thêm tệp dotnet dev-certs https --trust 09 vào thư mục dotnet dev-certs https --trust 06 với mã sau:

  • Nhấp vào Bấm vào dự án TODOAPI và chọn Thêm> Thư mục mới. Đặt tên cho thư mục
    dotnet dev-certs https --trust
    
    06.Add > Class. Name the class TodoContext and click Add.
  • Bấm vào thư mục
    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp mới ...> Chung> Lớp trống.

  • Đặt tên cho lớp TODOITEM, sau đó chọn Tạo.

    using Microsoft.EntityFrameworkCore;
    
    namespace TodoApi.Models;
    
    public class TodoContext : DbContext
    {
        public TodoContext(DbContextOptions options)
            : base(options)
        {
        }
    
        public DbSet TodoItems { get; set; } = null!;
    }
    

Thuộc tính dotnet dev-certs https --trust 13 có chức năng là khóa duy nhất trong cơ sở dữ liệu quan hệ.

Các lớp mô hình có thể đi bất cứ nơi nào trong dự án, nhưng thư mục ____106 được sử dụng bởi quy ước.

Thêm bối cảnh cơ sở dữ liệu

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

Bối cảnh cơ sở dữ liệu là lớp chính phối hợp chức năng khung thực thể cho mô hình dữ liệu. Lớp này được tạo bằng cách xuất phát từ lớp microsoft.entityframeworkcore.dbcontext.

  • Visual Studio Code / Visual Studio cho Mac
  • Thêm gói Nuget
  • Từ menu Công cụ, chọn Trình quản lý gói NUGET> Quản lý các gói Nuget cho giải pháp.

Chọn tab Duyệt, sau đó nhập [HttpPost] public async Task> PostTodoItem(TodoItem todoItem) { _context.TodoItems.Add(todoItem); await _context.SaveChangesAsync(); // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); } 9 vào hộp tìm kiếm.

  • Visual Studio
  • Visual Studio Code
  • Visual Studio cho Mac

  • Trong giải pháp Explorer, nhấp chuột phải vào dự án. Chọn Thêm> Thư mục mới. Đặt tên cho thư mục

    dotnet dev-certs https --trust
    
    06.Add > New Scaffolded Item.

  • Nhấp chuột phải vào thư mục

    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp. Đặt tên cho lớp TODOITEM và chọn Thêm.API Controller with actions, using Entity Framework, and then select Add.

  • Thay thế mã mẫu bằng cách sau:Add API Controller with actions, using Entity Framework dialog:

    • Thêm một thư mục có tên
      dotnet dev-certs https --trust
      
      06.TodoItem (TodoApi.Models) in the Model class.
    • Thêm tệp
      dotnet dev-certs https --trust
      
      09 vào thư mục
      dotnet dev-certs https --trust
      
      06 với mã sau:TodoContext (TodoApi.Models) in the Data context class.
    • Nhấp vào Bấm vào dự án TODOAPI và chọn Thêm> Thư mục mới. Đặt tên cho thư mục
      dotnet dev-certs https --trust
      
      06.Add.

    Bấm vào thư mục

    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp mới ...> Chung> Lớp trống.Add to try scaffolding a second time.

Đặt tên cho lớp TODOITEM, sau đó chọn Tạo.

  • Thuộc tính
    dotnet dev-certs https --trust
    
    13 có chức năng là khóa duy nhất trong cơ sở dữ liệu quan hệ.TodoAPI project and select Open in Terminal. The terminal opens at the
    dotnet dev-certs https --trust
    
    22 project folder. Run the following commands:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator

Các lớp mô hình có thể đi bất cứ nơi nào trong dự án, nhưng thư mục ____106 được sử dụng bởi quy ước.

  • Thêm bối cảnh cơ sở dữ liệu
  • Bối cảnh cơ sở dữ liệu là lớp chính phối hợp chức năng khung thực thể cho mô hình dữ liệu. Lớp này được tạo bằng cách xuất phát từ lớp microsoft.entityframeworkcore.dbcontext.

Visual Studio Code / Visual Studio cho Mac

Thêm gói Nuget

dotnet-aspnet-codegenerator controller -name TodoItemsController -async -api -m TodoItem -dc TodoContext -outDir Controllers

Từ menu Công cụ, chọn Trình quản lý gói NUGET> Quản lý các gói Nuget cho giải pháp.

Chọn tab Duyệt, sau đó nhập

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
9 vào hộp tìm kiếm.

  • Chọn
    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    9 ở khung bên trái.
  • Chọn hộp kiểm Dự án ở khung bên phải và sau đó chọn Cài đặt.

Thêm bối cảnh cơ sở dữ liệu Todocontext

  • Nhấp chuột phải vào thư mục
    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp. Kể tên lớp Todocontext và nhấp vào Thêm.
  • Thêm tệp
    dotnet dev-certs https --trust
    
    18 vào thư mục
    dotnet dev-certs https --trust
    
    06.

Nhập mã sau:

Đăng ký bối cảnh cơ sở dữ liệu

Trong ASP.NET Core, các dịch vụ như bối cảnh DB phải được đăng ký với thùng chứa tiêm phụ thuộc (DI). Container cung cấp dịch vụ cho bộ điều khiển.

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}

Cập nhật

dotnet dev-certs https --trust
20 với mã được tô sáng sau:

Để biết thêm thông tin, hãy xem định tuyến thuộc tính với các thuộc tính HTTP [động từ].

Phương thức tạo ra:

  • Trả về mã trạng thái HTTP 201 nếu thành công.
    dotnet dev-certs https --trust
    
    34 là phản hồi tiêu chuẩn cho phương thức
    dotnet dev-certs https --trust
    
    31 tạo ra một tài nguyên mới trên máy chủ.
  • Thêm một tiêu đề vị trí vào phản hồi. Tiêu đề
    dotnet dev-certs https --trust
    
    36 chỉ định URI của mục việc cần làm mới được tạo. Để biết thêm thông tin, xem 10.2.2 201 được tạo.
  • Tài liệu tham khảo hành động
    dotnet dev-certs https --trust
    
    37 để tạo URI tiêu đề
    dotnet dev-certs https --trust
    
    36. Từ khóa C#
    dotnet dev-certs https --trust
    
    39 được sử dụng để tránh mã hóa cứng tên hành động trong cuộc gọi
    dotnet dev-certs https --trust
    
    40.

Kiểm tra posttodoitem

  • Nhấn Ctrl+F5 để chạy ứng dụng.

  • Trong cửa sổ Trình duyệt Swagger, chọn POST /API /TODOITEMS, sau đó chọn dùng thử.POST /api/TodoItems, and then select Try it out.

  • Trong cửa sổ đầu vào yêu cầu, cập nhật JSON. Ví dụ,Request body input window, update the JSON. For example,

    {
      "name": "walk dog",
      "isComplete": true
    }
    
  • Chọn Thực thiExecute

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

Kiểm tra URI tiêu đề vị trí

Trong bài trước, UI Swagger hiển thị tiêu đề vị trí trong các tiêu đề phản hồi. Ví dụ,

dotnet dev-certs https --trust
41. Tiêu đề vị trí hiển thị URI cho tài nguyên được tạo.Response headers. For example,
dotnet dev-certs https --trust
41. The location header shows the URI to the created resource.

Để kiểm tra tiêu đề vị trí:

  • Trong cửa sổ Trình duyệt Swagger, chọn GET/API/TODOITEMS/{id}, sau đó chọn dùng thử.GET /api/TodoItems/{id}, and then select Try it out.

  • Nhập

    dotnet dev-certs https --trust
    
    42 vào hộp nhập
    dotnet dev-certs https --trust
    
    43, sau đó chọn Execute.Execute.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

Kiểm tra các phương pháp GET

Hai điểm cuối được thực hiện:

  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    3
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    4

Phần trước cho thấy một ví dụ về tuyến đường

dotnet dev-certs https --trust
46.

Thực hiện theo các hướng dẫn bài đăng để thêm một mục TODO khác, sau đó kiểm tra tuyến

dotnet dev-certs https --trust
47 bằng Swagger.

Ứng dụng này sử dụng cơ sở dữ liệu trong bộ nhớ. Nếu ứng dụng được dừng và bắt đầu, yêu cầu GET trước sẽ không trả về bất kỳ dữ liệu nào. Nếu không có dữ liệu được trả về, hãy đăng dữ liệu lên ứng dụng.

Định tuyến và đường dẫn URL

Thuộc tính

dotnet dev-certs https --trust
48 biểu thị một phương thức đáp ứng yêu cầu
dotnet dev-certs https --trust
49. Đường dẫn URL cho mỗi phương thức được xây dựng như sau:

  • Bắt đầu với chuỗi mẫu trong thuộc tính

    dotnet dev-certs https --trust
    
    50 của bộ điều khiển:

    dotnet dev-certs https --trust
    
    0
  • Thay thế

    dotnet dev-certs https --trust
    
    51 bằng tên của bộ điều khiển, theo quy ước là tên lớp bộ điều khiển trừ đi hậu tố "bộ điều khiển". Đối với mẫu này, tên lớp bộ điều khiển là TODOITEMSControll, vì vậy tên bộ điều khiển là "TODOITEMS". Định tuyến cốt lõi ASP.NET là trường hợp không nhạy cảm.TodoItemsController, so the controller name is "TodoItems". ASP.NET Core routing is case insensitive.

  • Nếu thuộc tính

    dotnet dev-certs https --trust
    
    48 có mẫu tuyến đường (ví dụ:
    dotnet dev-certs https --trust
    
    53), hãy nối nó vào đường dẫn. Mẫu này không sử dụng một mẫu. Để biết thêm thông tin, hãy xem định tuyến thuộc tính với các thuộc tính HTTP [động từ].

Trong phương thức

dotnet dev-certs https --trust
37 sau đây,
dotnet dev-certs https --trust
55 là biến trình giữ chỗ cho định danh duy nhất của mục việc cần làm. Khi
dotnet dev-certs https --trust
37 được gọi, giá trị của
dotnet dev-certs https --trust
55 trong URL được cung cấp cho phương thức trong tham số
dotnet dev-certs https --trust
43 của nó.

dotnet dev-certs https --trust
1

Trả về giá trị

Loại trả về của các phương thức

dotnet dev-certs https --trust
59 và
dotnet dev-certs https --trust
37 là loại hành động. ASP.NET Core tự động tuần tự hóa đối tượng thành JSON và ghi JSON vào phần thân của thông báo phản hồi. Mã phản hồi cho loại trả lại này là 200 OK, giả sử không có trường hợp ngoại lệ nào. Các ngoại lệ chưa được xử lý được dịch thành lỗi 5xx.

dotnet dev-certs https --trust
61 Các loại trả về có thể biểu thị một loạt các mã trạng thái HTTP. Ví dụ:
dotnet dev-certs https --trust
37 có thể trả về hai giá trị trạng thái khác nhau:

  • Nếu không có mục nào khớp với ID được yêu cầu, phương thức sẽ trả về mã lỗi trạng thái 404.
  • Mặt khác, phương pháp trả về 200 với cơ thể phản hồi JSON. Trả lại
    dotnet dev-certs https --trust
    
    63 dẫn đến phản hồi
    dotnet dev-certs https --trust
    
    64.

Phương pháp puttodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
65:

dotnet dev-certs https --trust
2

dotnet dev-certs https --trust
65 tương tự như
dotnet dev-certs https --trust
30, ngoại trừ nó sử dụng
dotnet dev-certs https --trust
68. Phản hồi là 204 (không có nội dung). Theo thông số kỹ thuật của HTTP, yêu cầu
dotnet dev-certs https --trust
69 yêu cầu khách hàng gửi toàn bộ thực thể được cập nhật, không chỉ các thay đổi. Để hỗ trợ cập nhật một phần, hãy sử dụng bản vá HTTP.

Kiểm tra phương pháp puttodoitem

Mẫu này sử dụng cơ sở dữ liệu trong bộ nhớ phải được khởi tạo mỗi khi ứng dụng được bắt đầu. Phải có một mục trong cơ sở dữ liệu trước khi bạn thực hiện cuộc gọi. Gọi nhận để đảm bảo có một mục trong cơ sở dữ liệu trước khi thực hiện cuộc gọi.

Sử dụng giao diện người dùng Swagger, sử dụng nút đặt để cập nhật

dotnet dev-certs https --trust
05 có ID = 1 và đặt tên của nó thành
dotnet dev-certs https --trust
71. Lưu ý phản hồi là
dotnet dev-certs https --trust
72.

Phương thức Deletetodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
73:

dotnet dev-certs https --trust
3

Kiểm tra phương thức DeletetOdoItem

Sử dụng UI Swagger để xóa

dotnet dev-certs https --trust
05that có ID = 1. Lưu ý Phản hồi là
dotnet dev-certs https --trust
72.

Kiểm tra với http-repl, postman hoặc curl

HTTP-Repl, Postman và Curl thường được sử dụng để kiểm tra API. Swagger sử dụng

dotnet dev-certs https --trust
76 và hiển thị lệnh
dotnet dev-certs https --trust
76 mà nó đã gửi.

Để biết hướng dẫn về các công cụ này, hãy xem các liên kết sau:

  • Kiểm tra API với người đưa thư
  • Cài đặt và kiểm tra API với
    dotnet dev-certs https --trust
    
    78

Để biết thêm thông tin về

dotnet dev-certs https --trust
78, hãy xem API Web thử nghiệm với HTTPrepl.

Ngăn chặn quá mức

Hiện tại ứng dụng mẫu hiển thị toàn bộ đối tượng

dotnet dev-certs https --trust
05. Các ứng dụng sản xuất thường giới hạn dữ liệu đầu vào và được trả về bằng cách sử dụng một tập hợp con của mô hình. Có nhiều lý do đằng sau điều này, và bảo mật là một lý do chính. Tập hợp con của mô hình thường được gọi là đối tượng truyền dữ liệu (DTO), mô hình đầu vào hoặc mô hình xem. DTO được sử dụng trong hướng dẫn này.DTO is used in this tutorial.

Một DTO có thể được sử dụng để:

  • Ngăn chặn quá mức.
  • Ẩn các thuộc tính mà khách hàng không được phép xem.
  • Bỏ qua một số thuộc tính để giảm kích thước tải trọng.
  • Biểu đồ đối tượng phẳng có chứa các đối tượng lồng nhau. Biểu đồ đối tượng phẳng có thể thuận tiện hơn cho khách hàng.

Để chứng minh phương pháp DTO, hãy cập nhật lớp

dotnet dev-certs https --trust
05 để bao gồm một trường bí mật:

dotnet dev-certs https --trust
4

Trường bí mật cần được ẩn khỏi ứng dụng này, nhưng một ứng dụng hành chính có thể chọn để lộ nó.

Xác minh bạn có thể đăng và nhận trường bí mật.

Tạo mô hình DTO:

dotnet dev-certs https --trust
5

Cập nhật

dotnet dev-certs https --trust
24 để sử dụng
dotnet dev-certs https --trust
83:

dotnet dev-certs https --trust
6

Xác minh bạn không thể đăng hoặc nhận trường bí mật.

Gọi API Web với JavaScript

Xem Hướng dẫn: Gọi API Web ASP.NET Core với JavaScript.

Loạt video API Web

Xem video: Sê -ri của người mới bắt đầu: API Web.

Trong hướng dẫn này, bạn học cách:

  • Tạo một dự án API Web.
  • Thêm một lớp mô hình và bối cảnh cơ sở dữ liệu.
  • Giàn giáo Một bộ điều khiển với các phương pháp CRUD.
  • Định cấu hình định tuyến, đường dẫn URL và trả về giá trị.
  • Gọi API Web với HTTP-Repl.

Cuối cùng, bạn có một API web có thể quản lý các mục "Việc cần làm" được lưu trữ trong cơ sở dữ liệu.

Tổng quan

Hướng dẫn này tạo ra API sau:

APISự mô tảYêu cầu cơ thểCơ thể phản ứng
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
3
Nhận tất cả các mặt hàng cần làmKhông cóMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDKhông cóMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDMảng các mặt hàng cần làmMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDMảng các mặt hàng cần làmKhông có
Mảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Không cóKhông có

Mảng các mặt hàng cần làm

Hướng dẫn dotnet api with mysql - dotnet api với mysql

[HttpPost] public async Task> PostTodoItem(TodoItem todoItem) { _context.TodoItems.Add(todoItem); await _context.SaveChangesAsync(); // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); } 4

Nhận một mục theo ID

  • Mục cần làm
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    5
  • Thêm một mục mới
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    6File menu, select New > Project.
  • Cập nhật một mục hiện tại & nbsp;
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    7 & nbsp; & nbsp;ASP.NET Core Web API template and select Next.
  • Xóa một mục & nbsp; & nbsp;Configure your new project dialog, name the project TodoApi and select Next.
  • Biểu đồ sau đây cho thấy thiết kế của ứng dụng.Additional information dialog:
    • Điều kiện tiên quyếtFramework is .NET 6.0 (Long-term support).
    • Tạo một dự án webUse controllers(uncheck to use minimal APIs) is checked.
    • Visual StudioCreate.
  • Visual Studio Code

  • Visual Studio cho Mac

  • Từ menu Tệp, chọn New> Project.

    dotnet new webapi -o TodoApi
    cd TodoApi
    dotnet add package Microsoft.EntityFrameworkCore.InMemory
    code -r ../TodoApi
    

    Nhập API Web vào hộp tìm kiếm.

    • Chọn mẫu API API ASP.NET Core và chọn Tiếp theo.
    • Trong hộp thoại Cấu hình dự án mới của bạn, đặt tên cho dự án TODOAPI và chọn Tiếp theo.
  • Trong hộp thoại Thông tin bổ sung:Yes.

  • Xác nhận khung là .NET 6.0 (hỗ trợ dài hạn).File > New Solution.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Xác nhận hộp kiểm cho bộ điều khiển sử dụng (bỏ chọn để sử dụng API tối thiểu) được kiểm tra..NET Core > App > API > Next. In version 8.6 or later, select Web and Console > App > API > Next.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Chọn Tạo.Configure the new ASP.NET Core Web API dialog, select the latest .NET Core 5.x Target Framework. Select Next.

  • Mở thiết bị đầu cuối tích hợp.Project Name and then select Create.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

Thay đổi thư mục ([HttpPost] public async Task> PostTodoItem(TodoItem todoItem) { _context.TodoItems.Add(todoItem); await _context.SaveChangesAsync(); // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); } 8) vào thư mục sẽ chứa thư mục dự án.

Chạy các lệnh sau:

  • Những lệnh này:System Preferences > Keyboard > Shortcuts > Services.
  • Tạo một dự án API Web mới và mở nó trong Visual Studio Code.Files and Folders, verify New Terminal at Folder is selected.

Thêm gói Nuget cần thiết cho phần tiếp theo.Visual Studio or from Finder.

Khi một hộp thoại hỏi bạn có muốn thêm tài sản cần thiết vào dự án không, chọn Có.

  • Chọn Tệp> Giải pháp mới.
  • Trong Visual Studio cho Mac sớm hơn phiên bản 8.6, chọn .NET Core> Ứng dụng> API> Tiếp theo. Trong phiên bản 8.6 trở lên, chọn Web và Bảng điều khiển> Ứng dụng> API> Tiếp theo.Tools > Open in Terminal.

Trong cấu hình hộp thoại API API ASP.NET Core mới, chọn khung đích .NET Core 5.x mới nhất. Chọn Tiếp theo.

  • Nhập TODOAPI cho tên dự án và sau đó chọn Tạo.
  • Truy cập một thiết bị đầu cuối lệnh trên MacNew Terminal at Folder.

Lần đầu tiên truy cập vào một thiết bị đầu tiên trên Mac yêu cầu cấu hình cài đặt sau:

dotnet dev-certs https --trust
8

Điều hướng đến Tùy chọn hệ thống> Bàn phím> Phím tắt> Dịch vụ.

Trong các tệp và thư mục, xác minh thiết bị đầu cuối mới tại thư mục được chọn.

  • Mục cần làm
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    5
  • Thêm một mục mới

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
6

Cập nhật một mục hiện tại & nbsp;

Hướng dẫn dotnet api with mysql - dotnet api với mysql

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
7 & nbsp; & nbsp;Yes if you trust the IIS Express SSL certificate.

Xóa một mục & nbsp; & nbsp;

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Biểu đồ sau đây cho thấy thiết kế của ứng dụng.Yes if you agree to trust the development certificate.

Điều kiện tiên quyết

Tạo một dự án web

  • Tin tưởng chứng chỉ phát triển HTTPS bằng cách chạy lệnh sau:

    dotnet dev-certs https --trust
    

    Lệnh trước không hoạt động trên Linux. Xem tài liệu của phân phối Linux của bạn để tin vào chứng chỉ.

    Lệnh trước hiển thị hộp thoại sau, miễn là chứng chỉ không được tin cậy trước đó:

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Chọn Có nếu bạn đồng ý tin tưởng chứng chỉ phát triển.Yes if you agree to trust the development certificate.

    Xem Trust The ASP.NET Core HTTPS Chứng chỉ Phát triển để biết thêm thông tin.

Để biết thông tin về việc tin tưởng trình duyệt Firefox, hãy xem Firefox Sec_error_inadequation_key_usage Lỗi chứng chỉ.

Chạy ứng dụng:

  • Nhấn Ctrl+F5.
  • Tại dấu nhắc môi trường chọn, chọn .NET Core.Select environment prompt, choose .NET Core.
  • Chọn Thêm Cấu hình> .NET: Khởi chạy ứng dụng Bảng điều khiển .NET Core cục bộ.Add Configuration > .NET: Launch a local .NET Core Console App.
  • Trong cấu hình JSON:
    • Thay thế
      dotnet dev-certs https --trust
      
      93 bằng
      dotnet dev-certs https --trust
      
      94.
    • Thay thế
      dotnet dev-certs https --trust
      
      95 bằng
      dotnet dev-certs https --trust
      
      96.
  • Nhấn Ctrl+F5.
  • Tại dấu nhắc môi trường chọn, chọn .NET Core.Could not find the task 'build' dialog, select Configure Task.
  • Chọn Thêm Cấu hình> .NET: Khởi chạy ứng dụng Bảng điều khiển .NET Core cục bộ.Create
    dotnet dev-certs https --trust
    
    97 file from template
    .
  • Trong cấu hình JSON:.NET Core task template.
  • Nhấn Ctrl+F5.

Tại dấu nhắc môi trường chọn, chọn .NET Core.

Chọn Thêm Cấu hình> .NET: Khởi chạy ứng dụng Bảng điều khiển .NET Core cục bộ.

Trong cấu hình JSON:GET > Try it out > Execute. The page displays:

  • Thay thế
    dotnet dev-certs https --trust
    
    93 bằng
    dotnet dev-certs https --trust
    
    94.
  • Thay thế
    dotnet dev-certs https --trust
    
    95 bằng
    dotnet dev-certs https --trust
    
    96.
  • Trong không thể tìm thấy hộp thoại 'xây dựng' tác vụ, chọn Định cấu hình tác vụ.
  • Chọn Tạo tệp
    dotnet dev-certs https --trust
    
    97 từ mẫu.

Chọn mẫu .NET Core tác vụ.

Trong trình duyệt, điều hướng đến

{
  "name": "walk dog",
  "isComplete": true
}
7, trong đó
{
  "name": "walk dog",
  "isComplete": true
}
2 là số cổng được chọn ngẫu nhiên được hiển thị trong đầu ra.

Đối với Visual Studio cho Mac, xem phiên bản .NET 5 của hướng dẫn này.Request URL in the browser:

dotnet dev-certs https --trust
04

Trang Swagger

dotnet dev-certs https --trust
03 được hiển thị. Chọn Nhận> Thử nó ra> Thực thi. Trang hiển thị:

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]

Lệnh Curl để kiểm tra API WeatherForecast.

URL để kiểm tra API thời tiết.

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
1

Mã phản hồi, cơ thể và tiêu đề.

Một hộp danh sách thả xuống với các loại phương tiện và giá trị ví dụ và lược đồ.

Nếu trang Swagger không xuất hiện, hãy xem vấn đề GitHub này.

  • Swagger được sử dụng để tạo tài liệu hữu ích và các trang trợ giúp cho API Web. Hướng dẫn này tập trung vào việc tạo API Web. Để biết thêm thông tin về Swagger, hãy xem Tài liệu API API ASP.NET Core với Swagger / Openapi.
  • Sao chép và dán URL yêu cầu vào trình duyệt:
    dotnet dev-certs https --trust
    
    04
  • JSON Tương tự như ví dụ sau được trả về:
  • Cập nhật LaunchurlSolution Explorer, right-click the project. Select Add > New Folder. Name the folder

    dotnet dev-certs https --trust
    
    06.

  • Trong các thuộc tính \ LaunchsitingS.JSON, Cập nhật

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    02 từ
    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    03 đến
    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    04:Add > Class. Name the class TodoItem and select Add.

  • Bởi vì Swagger sẽ bị xóa, đánh dấu trước đó thay đổi URL được khởi chạy thành phương thức GET của bộ điều khiển được thêm vào các phần sau.

  • Thêm một lớp mô hình

  • Một mô hình là một tập hợp các lớp đại diện cho dữ liệu mà ứng dụng quản lý. Mô hình cho ứng dụng này là một lớp

    dotnet dev-certs https --trust
    
    05 duy nhất.

Chọn Thêm Cấu hình> .NET: Khởi chạy ứng dụng Bảng điều khiển .NET Core cục bộ.

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
2

Trong cấu hình JSON:

Thay thế

dotnet dev-certs https --trust
93 bằng
dotnet dev-certs https --trust
94.

Thay thế dotnet dev-certs https --trust 95 bằng dotnet dev-certs https --trust 96.

Trong không thể tìm thấy hộp thoại 'xây dựng' tác vụ, chọn Định cấu hình tác vụ.

  • Swagger được sử dụng để tạo tài liệu hữu ích và các trang trợ giúp cho API Web. Hướng dẫn này tập trung vào việc tạo API Web. Để biết thêm thông tin về Swagger, hãy xem Tài liệu API API ASP.NET Core với Swagger / Openapi.
  • Sao chép và dán URL yêu cầu vào trình duyệt:
    dotnet dev-certs https --trust
    
    04
  • JSON Tương tự như ví dụ sau được trả về:

Cập nhật Launchurl

  • Trong các thuộc tính \ LaunchsitingS.JSON, Cập nhật
    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    02 từ
    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    03 đến
    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    04:Tools menu, select NuGet Package Manager > Manage NuGet Packages for Solution.
  • Bởi vì Swagger sẽ bị xóa, đánh dấu trước đó thay đổi URL được khởi chạy thành phương thức GET của bộ điều khiển được thêm vào các phần sau.Browse tab, and then enter
    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    9 in the search box.
  • Thêm một lớp mô hình
  • Một mô hình là một tập hợp các lớp đại diện cho dữ liệu mà ứng dụng quản lý. Mô hình cho ứng dụng này là một lớp
    dotnet dev-certs https --trust
    
    05 duy nhất.Project checkbox in the right pane and then select Install.

Visual Studio

  • Visual Studio CodeAdd > Class. Name the class TodoContext and click Add.
  • Visual Studio cho Mac

Chọn Thêm Cấu hình> .NET: Khởi chạy ứng dụng Bảng điều khiển .NET Core cục bộ.

  • Trong cấu hình JSON:

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    3

Thay thế dotnet dev-certs https --trust 93 bằng dotnet dev-certs https --trust 94.

Thay thế

dotnet dev-certs https --trust
95 bằng
dotnet dev-certs https --trust
96.

Trong không thể tìm thấy hộp thoại 'xây dựng' tác vụ, chọn Định cấu hình tác vụ.

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
4

Chọn Tạo tệp

dotnet dev-certs https --trust
97 từ mẫu.

  • Chọn mẫu .NET Core tác vụ.
  • Trong trình duyệt, điều hướng đến
    {
      "name": "walk dog",
      "isComplete": true
    }
    
    7, trong đó
    {
      "name": "walk dog",
      "isComplete": true
    }
    
    2 là số cổng được chọn ngẫu nhiên được hiển thị trong đầu ra.
  • Đối với Visual Studio cho Mac, xem phiên bản .NET 5 của hướng dẫn này.
  • Trang Swagger
    dotnet dev-certs https --trust
    
    03 được hiển thị. Chọn Nhận> Thử nó ra> Thực thi. Trang hiển thị:

Lệnh Curl để kiểm tra API WeatherForecast.

  • Swagger được sử dụng để tạo tài liệu hữu ích và các trang trợ giúp cho API Web. Hướng dẫn này tập trung vào việc tạo API Web. Để biết thêm thông tin về Swagger, hãy xem Tài liệu API API ASP.NET Core với Swagger / Openapi.
  • Sao chép và dán URL yêu cầu vào trình duyệt:
    dotnet dev-certs https --trust
    
    04
  • JSON Tương tự như ví dụ sau được trả về:
  • Cập nhật Launchurl

  • Trong các thuộc tính \ LaunchsitingS.JSON, Cập nhật

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    02 từ
    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    03 đến
    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    04:Add > New Scaffolded Item.

  • Bởi vì Swagger sẽ bị xóa, đánh dấu trước đó thay đổi URL được khởi chạy thành phương thức GET của bộ điều khiển được thêm vào các phần sau.API Controller with actions, using Entity Framework, and then select Add.

  • Thêm một lớp mô hìnhAdd API Controller with actions, using Entity Framework dialog:

    • Một mô hình là một tập hợp các lớp đại diện cho dữ liệu mà ứng dụng quản lý. Mô hình cho ứng dụng này là một lớp
      dotnet dev-certs https --trust
      
      05 duy nhất.TodoItem (TodoApi.Models) in the Model class.
    • Chọn Todocontext (TODOAPI.Models) trong lớp ngữ cảnh dữ liệu.TodoContext (TodoApi.Models) in the Data context class.
    • Chọn Thêm.Add.

    Nếu thao tác giàn giáo không thành công, hãy chọn Thêm để thử Giàn giáo lần thứ hai.Add to try scaffolding a second time.

Hãy chắc chắn rằng tất cả các thay đổi của bạn cho đến nay được lưu.

Chạy các lệnh sau từ thư mục dự án, nghĩa là thư mục

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
20:

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
5

Các lệnh trước:

  • Thêm các gói Nuget cần thiết cho giàn giáo.
  • Cài đặt động cơ giàn giáo (
    dotnet dev-certs https --trust
    
    23).
  • Giàn giáo
    dotnet dev-certs https --trust
    
    24.

Đối với Visual Studio cho Mac, xem phiên bản .NET 5 của hướng dẫn này.

Mã được tạo:

  • Đánh dấu lớp với thuộc tính
    dotnet dev-certs https --trust
    
    25. Thuộc tính này chỉ ra rằng bộ điều khiển đáp ứng các yêu cầu API Web. Để biết thông tin về các hành vi cụ thể mà thuộc tính cho phép, hãy xem Tạo API Web với ASP.NET Core.
  • Sử dụng DI để tiêm bối cảnh cơ sở dữ liệu (
    dotnet dev-certs https --trust
    
    26) vào bộ điều khiển. Bối cảnh cơ sở dữ liệu được sử dụng trong mỗi phương thức CRUD trong bộ điều khiển.

Các mẫu lõi ASP.NET cho:

  • Bộ điều khiển có chế độ xem bao gồm
    dotnet dev-certs https --trust
    
    27 trong mẫu tuyến đường.
  • Bộ điều khiển API không bao gồm
    dotnet dev-certs https --trust
    
    27 trong mẫu tuyến đường.

Khi mã thông báo

dotnet dev-certs https --trust
27 không nằm trong mẫu tuyến đường, tên hành động được loại trừ khỏi tuyến đường. Đó là, tên phương thức liên quan của hành động không được sử dụng trong tuyến đường phù hợp.

Cập nhật phương thức tạo posttodoitem

Cập nhật câu lệnh trả về trong

dotnet dev-certs https --trust
30 để sử dụng toán tử tên:

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
6

Mã trước là một phương thức bài HTTP, như được biểu thị bằng thuộc tính

dotnet dev-certs https --trust
32. Phương pháp nhận được giá trị của mục việc cần làm từ phần thân của yêu cầu HTTP.

Để biết thêm thông tin, hãy xem định tuyến thuộc tính với các thuộc tính HTTP [động từ].

Phương thức tạo ra:

  • Trả về mã trạng thái HTTP 201 nếu thành công. HTTP 201 là phản hồi tiêu chuẩn cho phương thức bài HTTP tạo ra tài nguyên mới trên máy chủ.
  • Thêm một tiêu đề vị trí vào phản hồi. Tiêu đề
    dotnet dev-certs https --trust
    
    36 chỉ định URI của mục việc cần làm mới được tạo. Để biết thêm thông tin, xem 10.2.2 201 được tạo.
  • Tài liệu tham khảo hành động
    dotnet dev-certs https --trust
    
    37 để tạo URI tiêu đề
    dotnet dev-certs https --trust
    
    36. Từ khóa C#
    dotnet dev-certs https --trust
    
    39 được sử dụng để tránh mã hóa cứng tên hành động trong cuộc gọi
    dotnet dev-certs https --trust
    
    40.

Cài đặt http-repl

Hướng dẫn này sử dụng http-repl để kiểm tra API web.

  • Chạy lệnh sau tại dấu nhắc lệnh:

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    7
  • Nếu bạn không cài đặt .NET 6.0 SDK hoặc thời gian chạy, hãy cài đặt thời gian chạy .NET 6.0.

Kiểm tra posttodoitem

  • Nhấn Ctrl+F5 để chạy ứng dụng.

  • Mở một cửa sổ thiết bị đầu cuối mới và chạy các lệnh sau. Nếu ứng dụng của bạn sử dụng một số cổng khác, hãy thay thế 5001 trong lệnh httprepl bằng số cổng của bạn.

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    8

    Dưới đây là một ví dụ về đầu ra từ lệnh:

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    9

Kiểm tra URI tiêu đề vị trí

Để kiểm tra tiêu đề vị trí, sao chép và dán nó vào lệnh httprepl

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
35.

Ví dụ sau đây giả định rằng bạn vẫn còn trong phiên HTTPrepl. Nếu bạn kết thúc phiên httprepl trước đó, hãy thay thế

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
36 bằng
[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
37 trong các lệnh sau:

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
0

Dưới đây là một ví dụ về đầu ra từ lệnh:

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
1

Kiểm tra URI tiêu đề vị trí

Để kiểm tra tiêu đề vị trí, sao chép và dán nó vào lệnh httprepl

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
35.

  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    3
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    4

Ví dụ sau đây giả định rằng bạn vẫn còn trong phiên HTTPrepl. Nếu bạn kết thúc phiên httprepl trước đó, hãy thay thế

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
36 bằng
[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
37 trong các lệnh sau:

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
2

Dưới đây là một ví dụ về đầu ra từ lệnh:

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
3

Kiểm tra URI tiêu đề vị trí

Để kiểm tra tiêu đề vị trí, sao chép và dán nó vào lệnh httprepl

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
35.

Ví dụ sau đây giả định rằng bạn vẫn còn trong phiên HTTPrepl. Nếu bạn kết thúc phiên httprepl trước đó, hãy thay thế [ { "date": "2019-07-16T19:04:05.7257911-06:00", "temperatureC": 52, "temperatureF": 125, "summary": "Mild" }, { "date": "2019-07-17T19:04:05.7258461-06:00", "temperatureC": 36, "temperatureF": 96, "summary": "Warm" }, { "date": "2019-07-18T19:04:05.7258467-06:00", "temperatureC": 39, "temperatureF": 102, "summary": "Cool" }, { "date": "2019-07-19T19:04:05.7258471-06:00", "temperatureC": 10, "temperatureF": 49, "summary": "Bracing" }, { "date": "2019-07-20T19:04:05.7258474-06:00", "temperatureC": -1, "temperatureF": 31, "summary": "Chilly" } ] 36 bằng [ { "date": "2019-07-16T19:04:05.7257911-06:00", "temperatureC": 52, "temperatureF": 125, "summary": "Mild" }, { "date": "2019-07-17T19:04:05.7258461-06:00", "temperatureC": 36, "temperatureF": 96, "summary": "Warm" }, { "date": "2019-07-18T19:04:05.7258467-06:00", "temperatureC": 39, "temperatureF": 102, "summary": "Cool" }, { "date": "2019-07-19T19:04:05.7258471-06:00", "temperatureC": 10, "temperatureF": 49, "summary": "Bracing" }, { "date": "2019-07-20T19:04:05.7258474-06:00", "temperatureC": -1, "temperatureF": 31, "summary": "Chilly" } ] 37 trong các lệnh sau:

Kiểm tra các phương pháp GET

  • Hai điểm cuối được thực hiện:

    dotnet dev-certs https --trust
    
    0
  • Bạn chỉ thấy một ví dụ về tuyến đường

    dotnet dev-certs https --trust
    
    46. Kiểm tra tuyến đường
    dotnet dev-certs https --trust
    
    47:TodoItemsController, so the controller name is "TodoItems". ASP.NET Core routing is case insensitive.

  • Lần này, JSON trở lại là một mảng của một mục.

Ứng dụng này sử dụng cơ sở dữ liệu trong bộ nhớ. Nếu ứng dụng được dừng và bắt đầu, yêu cầu GET trước sẽ không trả về bất kỳ dữ liệu nào. Nếu không có dữ liệu được trả về, hãy đăng dữ liệu lên ứng dụng.

dotnet dev-certs https --trust
1

Định tuyến và đường dẫn URL

Thuộc tính

dotnet dev-certs https --trust
48 biểu thị một phương thức đáp ứng yêu cầu Get HTTP. Đường dẫn URL cho mỗi phương thức được xây dựng như sau:

dotnet dev-certs https --trust
61 Các loại trả về có thể biểu thị một loạt các mã trạng thái HTTP. Ví dụ:
dotnet dev-certs https --trust
37 có thể trả về hai giá trị trạng thái khác nhau:

  • Nếu không có mục nào khớp với ID được yêu cầu, phương thức sẽ trả về mã lỗi trạng thái 404.
  • Mặt khác, phương pháp trả về 200 với cơ thể phản hồi JSON. Trở lại
    dotnet dev-certs https --trust
    
    63 dẫn đến phản hồi HTTP 200.

Phương pháp puttodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
65:

dotnet dev-certs https --trust
2

dotnet dev-certs https --trust
65 tương tự như
dotnet dev-certs https --trust
30, ngoại trừ nó sử dụng HTTP. Phản hồi là 204 (không có nội dung). Theo thông số kỹ thuật của HTTP, một yêu cầu đặt yêu cầu khách hàng gửi toàn bộ thực thể được cập nhật, không chỉ các thay đổi. Để hỗ trợ cập nhật một phần, hãy sử dụng bản vá HTTP.

Nếu bạn gặp lỗi khi gọi

dotnet dev-certs https --trust
65 trong phần sau, hãy gọi
[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
61 để đảm bảo có một mục trong cơ sở dữ liệu.

Kiểm tra phương pháp puttodoitem

Mẫu này sử dụng cơ sở dữ liệu trong bộ nhớ phải được khởi tạo mỗi khi ứng dụng được bắt đầu. Phải có một mục trong cơ sở dữ liệu trước khi bạn thực hiện cuộc gọi. Gọi nhận để đảm bảo có một mục trong cơ sở dữ liệu trước khi thực hiện cuộc gọi.

Cập nhật mục việc cần làm có ID = 1 và đặt tên của nó thành

dotnet dev-certs https --trust
71:

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
7

Dưới đây là một ví dụ về đầu ra từ lệnh:

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
8

Phương thức Deletetodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
73:

dotnet dev-certs https --trust
3

Kiểm tra phương thức DeletetOdoItem

Xóa mục việc cần làm có ID = 1:

using Microsoft.EntityFrameworkCore;

namespace TodoApi.Models;

public class TodoContext : DbContext
{
    public TodoContext(DbContextOptions options)
        : base(options)
    {
    }

    public DbSet TodoItems { get; set; } = null!;
}
0

Dưới đây là một ví dụ về đầu ra từ lệnh:

using Microsoft.EntityFrameworkCore;

namespace TodoApi.Models;

public class TodoContext : DbContext
{
    public TodoContext(DbContextOptions options)
        : base(options)
    {
    }

    public DbSet TodoItems { get; set; } = null!;
}
1

Phương thức Deletetodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
73:DTO is used in this tutorial.

Kiểm tra phương thức DeletetOdoItem

  • Xóa mục việc cần làm có ID = 1:
  • Ngăn chặn quá mức
  • Hiện tại ứng dụng mẫu hiển thị toàn bộ đối tượng
    dotnet dev-certs https --trust
    
    05. Các ứng dụng sản xuất thường giới hạn dữ liệu đầu vào và được trả về bằng cách sử dụng một tập hợp con của mô hình. Có nhiều lý do đằng sau điều này, và bảo mật là một lý do chính. Tập hợp con của mô hình thường được gọi là đối tượng truyền dữ liệu (DTO), mô hình đầu vào hoặc mô hình xem. DTO được sử dụng trong hướng dẫn này.
  • Một DTO có thể được sử dụng để:

Ngăn chặn quá mức.

dotnet dev-certs https --trust
4

Ẩn các thuộc tính mà khách hàng không được phép xem.

Bỏ qua một số thuộc tính để giảm kích thước tải trọng.

Biểu đồ đối tượng phẳng có chứa các đối tượng lồng nhau. Biểu đồ đối tượng phẳng có thể thuận tiện hơn cho khách hàng.

using Microsoft.EntityFrameworkCore;

namespace TodoApi.Models;

public class TodoContext : DbContext
{
    public TodoContext(DbContextOptions options)
        : base(options)
    {
    }

    public DbSet TodoItems { get; set; } = null!;
}
3

Để chứng minh phương pháp DTO, hãy cập nhật lớp

dotnet dev-certs https --trust
05 để bao gồm một trường bí mật:

using Microsoft.EntityFrameworkCore;

namespace TodoApi.Models;

public class TodoContext : DbContext
{
    public TodoContext(DbContextOptions options)
        : base(options)
    {
    }

    public DbSet TodoItems { get; set; } = null!;
}
4

Trường bí mật cần được ẩn khỏi ứng dụng này, nhưng một ứng dụng hành chính có thể chọn để lộ nó.

Xác minh bạn có thể đăng và nhận trường bí mật.

Tạo mô hình DTO:

Cập nhật dotnet dev-certs https --trust 24 để sử dụng dotnet dev-certs https --trust 83:

Xác minh bạn không thể đăng hoặc nhận trường bí mật.

Gọi API Web với JavaScript

  • Xem Hướng dẫn: Gọi API Web ASP.NET Core với JavaScript.
  • Loạt video API Web
  • Xem video: Sê -ri của người mới bắt đầu: API Web.
  • Trong hướng dẫn này, bạn học cách:
  • Tạo một dự án API Web.

Thêm một lớp mô hình và bối cảnh cơ sở dữ liệu.

Giàn giáo Một bộ điều khiển với các phương pháp CRUD.

Định cấu hình định tuyến, đường dẫn URL và trả về giá trị.

Gọi API Web với Postman.Cuối cùng, bạn có một API web có thể quản lý các mục "Việc cần làm" được lưu trữ trong cơ sở dữ liệu.Tổng quanHướng dẫn này tạo ra API sau:
APISự mô tảYêu cầu cơ thểCơ thể phản ứng
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
3
Nhận tất cả các mặt hàng cần làmYêu cầu cơ thểCơ thể phản ứng
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
3
Nhận tất cả các mặt hàng cần làmCơ thể phản ứngCơ thể phản ứng
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
3
Nhận tất cả các mặt hàng cần làmCơ thể phản ứngYêu cầu cơ thể
Cơ thể phản ứng
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
3
Yêu cầu cơ thểYêu cầu cơ thể

Cơ thể phản ứng

Hướng dẫn dotnet api with mysql - dotnet api với mysql

[HttpPost] public async Task> PostTodoItem(TodoItem todoItem) { _context.TodoItems.Add(todoItem); await _context.SaveChangesAsync(); // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); } 3

Nhận tất cả các mặt hàng cần làm

  • Không có
  • Mảng các mặt hàng cần làm
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    4
  • Nhận một mục theo IDFile menu, select New > Project.
  • Mục cần làmASP.NET Core Web API template and click Next.
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    5Create.
  • Thêm một mục mớiCreate a new ASP.NET Core Web Application dialog, confirm that .NET Core and ASP.NET Core 5.0 are selected. Select the API template and click Create.

Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    6

  • Cập nhật một mục hiện tại & nbsp;

  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    7 & nbsp; & nbsp;

    dotnet new webapi -o TodoApi
    cd TodoApi
    dotnet add package Microsoft.EntityFrameworkCore.InMemory
    code -r ../TodoApi
    
  • Xóa một mục & nbsp; & nbsp;Yes.

    Biểu đồ sau đây cho thấy thiết kế của ứng dụng.

    • Điều kiện tiên quyết
    • Tạo một dự án web
  • Visual StudioFile > New Solution.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Visual Studio Code.NET Core > App > API > Next. In version 8.6 or later, select Web and Console > App > API > Next.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Visual Studio cho MacConfigure the new ASP.NET Core Web API dialog, select the latest .NET Core 5.x Target Framework. Select Next.

  • Từ menu Tệp, chọn New> Project.Project Name and then select Create.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

Chọn mẫu API API ASP.NET Core và nhấp vào Tiếp theo.

Đặt tên cho dự án TODOAPI và nhấp vào Tạo.

  • Điều hướng đến Tùy chọn hệ thống> Bàn phím> Phím tắt> Dịch vụ.System Preferences > Keyboard > Shortcuts > Services.
  • Trong các tệp và thư mục, xác minh thiết bị đầu cuối mới tại thư mục được chọn.Files and Folders, verify New Terminal at Folder is selected.

Các hướng dẫn trước cho phép truy cập vào một thiết bị đầu cuối lệnh theo hai cách: từ bên trong Visual Studio hoặc từ Finder.Visual Studio or from Finder.

Để truy cập một thiết bị đầu cuối lệnh từ Visual Studio cho Mac:

  • Nhấp chuột phải vào tên dự án.
  • Điều hướng đến Công cụ> Mở trong thiết bị đầu cuối.Tools > Open in Terminal.

Để truy cập một thiết bị đầu cuối lệnh từ Finder:

  • Nhấp chuột phải vào thư mục mong muốn.
  • Ở dưới cùng của danh sách, chọn đầu cuối mới tại thư mục.New Terminal at Folder.

Mở một thiết bị đầu cuối lệnh trong thư mục dự án và chạy lệnh sau:

dotnet dev-certs https --trust
8

Kiểm tra dự án

Mẫu dự án tạo API

{
  "name": "walk dog",
  "isComplete": true
}
0 với sự hỗ trợ cho Swagger.

  • Visual Studio
  • Visual Studio Code
  • Visual Studio cho Mac

Nhấn Ctrl+F5 để chạy mà không cần trình gỡ lỗi.

Visual Studio hiển thị hộp thoại sau khi một dự án chưa được cấu hình để sử dụng SSL:

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Chọn Có nếu bạn tin tưởng chứng chỉ SSL IIS Express.Yes if you trust the IIS Express SSL certificate.

Hộp thoại sau được hiển thị:

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Chọn Có nếu bạn đồng ý tin tưởng chứng chỉ phát triển.Yes if you agree to trust the development certificate.

Để biết thông tin về việc tin tưởng trình duyệt Firefox, hãy xem Firefox Sec_error_inadequation_key_usage Lỗi chứng chỉ.

Visual Studio ra mắt:

  • Máy chủ web IIS Express.
  • Trình duyệt mặc định và điều hướng đến
    {
      "name": "walk dog",
      "isComplete": true
    }
    
    1, trong đó
    {
      "name": "walk dog",
      "isComplete": true
    }
    
    2 là số cổng được chọn ngẫu nhiên.
  • Tin tưởng chứng chỉ phát triển HTTPS bằng cách chạy lệnh sau:

    dotnet dev-certs https --trust
    

    Lệnh trước không hoạt động trên Linux. Xem tài liệu của phân phối Linux của bạn để tin vào chứng chỉ.

    Lệnh trước hiển thị hộp thoại sau, miễn là chứng chỉ không được tin cậy trước đó:

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Chọn Có nếu bạn đồng ý tin tưởng chứng chỉ phát triển.Yes if you agree to trust the development certificate.

    Để biết thông tin về việc tin tưởng trình duyệt Firefox, hãy xem Firefox Sec_error_inadequation_key_usage Lỗi chứng chỉ.

Để biết thông tin về việc tin tưởng trình duyệt Firefox, hãy xem Firefox Sec_error_inadequation_key_usage Lỗi chứng chỉ.

Visual Studio ra mắt:

Máy chủ web IIS Express.Run > Start Debugging to launch the app. Visual Studio for Mac launches a browser and navigates to

{
  "name": "walk dog",
  "isComplete": true
}
3, where
{
  "name": "walk dog",
  "isComplete": true
}
2 is a randomly chosen port number. An HTTP 404 (Not Found) error is returned. Append
{
  "name": "walk dog",
  "isComplete": true
}
6 to the URL (change the URL to
{
  "name": "walk dog",
  "isComplete": true
}
7).

Trình duyệt mặc định và điều hướng đến

{
  "name": "walk dog",
  "isComplete": true
}
1, trong đó
{
  "name": "walk dog",
  "isComplete": true
}
2 là số cổng được chọn ngẫu nhiên.GET > Try it out > Execute. The page displays:

  • Tin tưởng chứng chỉ phát triển HTTPS bằng cách chạy lệnh sau:
  • Lệnh trước không hoạt động trên Linux. Xem tài liệu của phân phối Linux của bạn để tin vào chứng chỉ.
  • Lệnh trước hiển thị hộp thoại sau, miễn là chứng chỉ không được tin cậy trước đó:
  • Xem Trust The ASP.NET Core HTTPS Chứng chỉ Phát triển để biết thêm thông tin.

Nhấn Ctrl+F5 để chạy ứng dụng. Trong trình duyệt, hãy đi theo URL theo dõi:

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
77

Chọn Run> Bắt đầu gỡ lỗi để khởi chạy ứng dụng. Visual Studio cho Mac ra mắt trình duyệt và điều hướng đến

{
  "name": "walk dog",
  "isComplete": true
}
3, trong đó
{
  "name": "walk dog",
  "isComplete": true
}
2 là số cổng được chọn ngẫu nhiên. Một lỗi HTTP 404 (không tìm thấy) được trả về. Nối
{
  "name": "walk dog",
  "isComplete": true
}
6 vào URL (thay đổi URL thành
{
  "name": "walk dog",
  "isComplete": true
}
7).

Trang Swagger

dotnet dev-certs https --trust
03 được hiển thị. Chọn Nhận> Thử nó ra> Thực thi. Trang hiển thị:Request URL in the browser:
dotnet dev-certs https --trust
04

Lệnh Curl để kiểm tra API WeatherForecast.

URL để kiểm tra API thời tiết.

Mã phản hồi, cơ thể và tiêu đề.

Một hộp danh sách thả xuống với các loại phương tiện và giá trị ví dụ và lược đồ.

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
1

Nếu trang Swagger không xuất hiện, hãy xem vấn đề GitHub này.

Swagger được sử dụng để tạo tài liệu hữu ích và các trang trợ giúp cho API Web. Hướng dẫn này tập trung vào việc tạo API Web. Để biết thêm thông tin về Swagger, hãy xem Tài liệu API API ASP.NET Core với Swagger / Openapi.

Sao chép và dán URL yêu cầu vào trình duyệt:

dotnet dev-certs https --trust
04

  • Visual Studio
  • Visual Studio Code
  • Visual Studio cho Mac
  • Nhấn Ctrl+F5 để chạy mà không cần trình gỡ lỗi.Solution Explorer, right-click the project. Select Add > New Folder. Name the folder

    dotnet dev-certs https --trust
    
    06.

  • Visual Studio hiển thị hộp thoại sau khi một dự án chưa được cấu hình để sử dụng SSL:Add > Class. Name the class TodoItem and select Add.

  • Chọn Có nếu bạn tin tưởng chứng chỉ SSL IIS Express.

  • Hộp thoại sau được hiển thị:

  • Chọn Có nếu bạn đồng ý tin tưởng chứng chỉ phát triển.

  • Để biết thông tin về việc tin tưởng trình duyệt Firefox, hãy xem Firefox Sec_error_inadequation_key_usage Lỗi chứng chỉ.Add > New Folder. Name the folder

    dotnet dev-certs https --trust
    
    06.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Visual Studio ra mắt:Add > New File > General > Empty Class.

  • Máy chủ web IIS Express.New.

  • Chọn Có nếu bạn tin tưởng chứng chỉ SSL IIS Express.

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
0

Hộp thoại sau được hiển thị:

Chọn Có nếu bạn đồng ý tin tưởng chứng chỉ phát triển.

Để biết thông tin về việc tin tưởng trình duyệt Firefox, hãy xem Firefox Sec_error_inadequation_key_usage Lỗi chứng chỉ.

Visual Studio ra mắt:

  • Visual Studio
  • Visual Studio Code

Visual Studio cho Mac

  • Nhấn Ctrl+F5 để chạy mà không cần trình gỡ lỗi.Tools menu, select NuGet Package Manager > Manage NuGet Packages for Solution.
  • Visual Studio hiển thị hộp thoại sau khi một dự án chưa được cấu hình để sử dụng SSL:Browse tab, and then enter
    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    9 in the search box.
  • Chọn
    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    9 ở khung bên trái.
  • Chọn hộp kiểm Dự án ở khung bên phải và sau đó chọn Cài đặt.Project checkbox in the right pane and then select Install.

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Thêm bối cảnh cơ sở dữ liệu Todocontext

  • Nhấp chuột phải vào thư mục
    dotnet dev-certs https --trust
    
    06 và chọn Thêm> Lớp. Kể tên lớp Todocontext và nhấp vào Thêm.Add > Class. Name the class TodoContext and click Add.
  • Thêm một lớp
    dotnet dev-certs https --trust
    
    26 vào thư mục
    dotnet dev-certs https --trust
    
    06.

  • Nhập mã sau:

    using Microsoft.EntityFrameworkCore;
    using TodoApi.Models;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddControllers();
    builder.Services.AddDbContext(opt =>
        opt.UseInMemoryDatabase("TodoList"));
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
    app.UseHttpsRedirection();
    
    app.UseAuthorization();
    
    app.MapControllers();
    
    app.Run();
    
    1

Đăng ký bối cảnh cơ sở dữ liệu

Trong ASP.NET Core, các dịch vụ như bối cảnh DB phải được đăng ký với thùng chứa tiêm phụ thuộc (DI). Container cung cấp dịch vụ cho bộ điều khiển.

Cập nhật

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
02 với mã sau:

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
2

Mã trước:

  • Xóa các cuộc gọi vênh.
  • Loại bỏ các khai báo
    dotnet dev-certs https --trust
    
    21 chưa được sử dụng.
  • Thêm bối cảnh cơ sở dữ liệu vào thùng chứa DI.
  • Chỉ định rằng bối cảnh cơ sở dữ liệu sẽ sử dụng cơ sở dữ liệu trong bộ nhớ.

Giàn giáo một bộ điều khiển

  • Visual Studio
  • Visual Studio Code / Visual Studio cho Mac
  • Nhấp chuột phải vào thư mục bộ điều khiển.

  • Chọn Thêm> Vật phẩm mới.Add > New Scaffolded Item.

  • Chọn Bộ điều khiển API với các hành động, sử dụng khung thực thể, sau đó chọn Thêm.API Controller with actions, using Entity Framework, and then select Add.

  • Trong bộ điều khiển API Thêm với các hành động, sử dụng hộp thoại Entity Framework:Add API Controller with actions, using Entity Framework dialog:

    • Chọn TODOITEM (TODOAPI.Models) trong lớp mô hình.TodoItem (TodoApi.Models) in the Model class.
    • Chọn Todocontext (TODOAPI.Models) trong lớp ngữ cảnh dữ liệu.TodoContext (TodoApi.Models) in the Data context class.
    • Chọn Thêm.Add.

Chạy các lệnh sau từ thư mục dự án,

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
04:

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
3

Các lệnh trước:

  • Thêm các gói Nuget cần thiết cho giàn giáo.
  • Cài đặt động cơ giàn giáo (
    dotnet dev-certs https --trust
    
    23).
  • Giàn giáo
    dotnet dev-certs https --trust
    
    24.

Mã được tạo:

  • Đánh dấu lớp với thuộc tính
    dotnet dev-certs https --trust
    
    25. Thuộc tính này chỉ ra rằng bộ điều khiển đáp ứng các yêu cầu API Web. Để biết thông tin về các hành vi cụ thể mà thuộc tính cho phép, hãy xem Tạo API Web với ASP.NET Core.
  • Sử dụng DI để tiêm bối cảnh cơ sở dữ liệu (
    dotnet dev-certs https --trust
    
    26) vào bộ điều khiển. Bối cảnh cơ sở dữ liệu được sử dụng trong mỗi phương thức CRUD trong bộ điều khiển.

Các mẫu lõi ASP.NET cho:

  • Bộ điều khiển có chế độ xem bao gồm
    dotnet dev-certs https --trust
    
    27 trong mẫu tuyến đường.
  • Bộ điều khiển API không bao gồm
    dotnet dev-certs https --trust
    
    27 trong mẫu tuyến đường.

Khi mã thông báo

dotnet dev-certs https --trust
27 không nằm trong mẫu tuyến đường, tên hành động được loại trừ khỏi tuyến đường. Đó là, tên phương thức liên quan của hành động không được sử dụng trong tuyến đường phù hợp.

Cập nhật phương thức tạo posttodoitem

Cập nhật câu lệnh trả về trong

dotnet dev-certs https --trust
30 để sử dụng toán tử tên:

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
4

Mã trước là một phương thức bài HTTP, như được biểu thị bằng thuộc tính

dotnet dev-certs https --trust
32. Phương pháp nhận được giá trị của mục việc cần làm từ phần thân của yêu cầu HTTP.

Để biết thêm thông tin, hãy xem định tuyến thuộc tính với các thuộc tính HTTP [động từ].

Phương thức tạo ra:

  • Trả về mã trạng thái HTTP 201 nếu thành công. HTTP 201 là phản hồi tiêu chuẩn cho phương thức bài HTTP tạo ra tài nguyên mới trên máy chủ.
  • Thêm một tiêu đề vị trí vào phản hồi. Tiêu đề
    dotnet dev-certs https --trust
    
    36 chỉ định URI của mục việc cần làm mới được tạo. Để biết thêm thông tin, xem 10.2.2 201 được tạo.
  • Tài liệu tham khảo hành động
    dotnet dev-certs https --trust
    
    37 để tạo URI tiêu đề
    dotnet dev-certs https --trust
    
    36. Từ khóa C#
    dotnet dev-certs https --trust
    
    39 được sử dụng để tránh mã hóa cứng tên hành động trong cuộc gọi
    dotnet dev-certs https --trust
    
    40.

Cài đặt người đưa thư

Hướng dẫn này sử dụng Postman để kiểm tra API Web.

  • Cài đặt người đưa thư
  • Hướng dẫn này sử dụng Postman để kiểm tra API Web.
  • Bắt đầu ứng dụng web.
  • Bắt đầu người đưa thư.SSL certificate verification:
    • Tắt xác minh chứng chỉ SSL:File > Settings (General tab), disable SSL certificate verification.
    • Postman cho Windows: Chọn Tệp> Cài đặt (tab Chung), Tắt xác minh chứng chỉ SSL SSL.Postman > Settings (General tab), disable SSL certificate verification.

      Postman for MacOS: Chọn Postman> Cài đặt (Tab chung), Tắt xác minh chứng chỉ SSL SSL.

      Cảnh báo

Xác minh chứng chỉ SSL kích hoạt lại sau khi kiểm tra bộ điều khiển.

  • Kiểm tra posttodoitem với người đưa thư

  • Tạo một yêu cầu mới.

  • Đặt phương thức HTTP thành

    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    19.

  • Đặt URI thành

    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    20. Ví dụ,
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    21.Body tab.

  • Chọn tab Body.raw radio button.

  • Chọn nút radio thô.JSON (application/json).

  • Đặt loại thành JSON (Ứng dụng/JSON).

    using Microsoft.EntityFrameworkCore;
    using TodoApi.Models;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddControllers();
    builder.Services.AddDbContext(opt =>
        opt.UseInMemoryDatabase("TodoList"));
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
    app.UseHttpsRedirection();
    
    app.UseAuthorization();
    
    app.MapControllers();
    
    app.Run();
    
    5
  • Trong phần thân yêu cầu nhập JSON cho một mục việc cần làm:Send.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

Chọn Gửi.

Kiểm tra URI tiêu đề vị trí

URI tiêu đề vị trí có thể được kiểm tra trong trình duyệt. Sao chép và dán URI tiêu đề vị trí vào trình duyệt.

  • Để kiểm tra trong Postman:Headers tab in the Response pane.

  • Chọn tab Tiêu đề trong ngăn Phản hồi.Location header value:

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Sao chép giá trị tiêu đề vị trí:

  • Đặt phương thức HTTP thành

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    61.

  • Trong phần thân yêu cầu nhập JSON cho một mục việc cần làm:Send.

Chọn Gửi.

Kiểm tra URI tiêu đề vị trí

  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    3
  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    4

URI tiêu đề vị trí có thể được kiểm tra trong trình duyệt. Sao chép và dán URI tiêu đề vị trí vào trình duyệt.

  • namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    21
  • namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    24

Để kiểm tra trong Postman:

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
6

Chọn tab Tiêu đề trong ngăn Phản hồi.

  • Kiểm tra posttodoitem với người đưa thư
  • Tạo một yêu cầu mới.GET.
  • Đặt phương thức HTTP thành
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    19.
  • Đặt URI thành
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    20. Ví dụ,
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    21.Two pane view in Postman.
  • Trong phần thân yêu cầu nhập JSON cho một mục việc cần làm:Send.

Chọn Gửi.

Định tuyến và đường dẫn URL

Thuộc tính

dotnet dev-certs https --trust
48 biểu thị một phương thức đáp ứng yêu cầu Get HTTP. Đường dẫn URL cho mỗi phương thức được xây dựng như sau:

  • Bắt đầu với chuỗi mẫu trong thuộc tính

    dotnet dev-certs https --trust
    
    50 của bộ điều khiển:

    using Microsoft.EntityFrameworkCore;
    using TodoApi.Models;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddControllers();
    builder.Services.AddDbContext(opt =>
        opt.UseInMemoryDatabase("TodoList"));
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
    app.UseHttpsRedirection();
    
    app.UseAuthorization();
    
    app.MapControllers();
    
    app.Run();
    
    7
  • Thay thế

    dotnet dev-certs https --trust
    
    51 bằng tên của bộ điều khiển, theo quy ước là tên lớp bộ điều khiển trừ đi hậu tố "bộ điều khiển". Đối với mẫu này, tên lớp bộ điều khiển là TODOITEMSControll, vì vậy tên bộ điều khiển là "TODOITEMS". Định tuyến cốt lõi ASP.NET là trường hợp không nhạy cảm.TodoItemsController, so the controller name is "TodoItems". ASP.NET Core routing is case insensitive.

  • Nếu thuộc tính

    dotnet dev-certs https --trust
    
    48 có mẫu tuyến đường (ví dụ:
    dotnet dev-certs https --trust
    
    53), hãy nối nó vào đường dẫn. Mẫu này không sử dụng một mẫu. Để biết thêm thông tin, hãy xem định tuyến thuộc tính với các thuộc tính HTTP [động từ].

Trong phương thức

dotnet dev-certs https --trust
37 sau đây,
dotnet dev-certs https --trust
55 là biến trình giữ chỗ cho định danh duy nhất của mục việc cần làm. Khi
dotnet dev-certs https --trust
37 được gọi, giá trị của
dotnet dev-certs https --trust
55 trong URL được cung cấp cho phương thức trong tham số
dotnet dev-certs https --trust
43 của nó.

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
8

Trả về giá trị

Loại trả về của các phương thức

dotnet dev-certs https --trust
59 và
dotnet dev-certs https --trust
37 là loại hành động. ASP.NET Core tự động tuần tự hóa đối tượng thành JSON và ghi JSON vào phần thân của thông báo phản hồi. Mã phản hồi cho loại trả lại này là 200 OK, giả sử không có trường hợp ngoại lệ nào. Các ngoại lệ chưa được xử lý được dịch thành lỗi 5xx.

dotnet dev-certs https --trust
61 Các loại trả về có thể biểu thị một loạt các mã trạng thái HTTP. Ví dụ:
dotnet dev-certs https --trust
37 có thể trả về hai giá trị trạng thái khác nhau:

  • Nếu không có mục nào khớp với ID được yêu cầu, phương thức sẽ trả về mã lỗi trạng thái 404.
  • Mặt khác, phương pháp trả về 200 với cơ thể phản hồi JSON. Trở lại
    dotnet dev-certs https --trust
    
    63 dẫn đến phản hồi HTTP 200.

Phương pháp puttodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
65:

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
9

dotnet dev-certs https --trust
65 tương tự như
dotnet dev-certs https --trust
30, ngoại trừ nó sử dụng HTTP. Phản hồi là 204 (không có nội dung). Theo thông số kỹ thuật của HTTP, một yêu cầu đặt yêu cầu khách hàng gửi toàn bộ thực thể được cập nhật, không chỉ các thay đổi. Để hỗ trợ cập nhật một phần, hãy sử dụng bản vá HTTP.

Nếu bạn gặp lỗi khi gọi

dotnet dev-certs https --trust
65, hãy gọi
[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
61 để đảm bảo có một mục trong cơ sở dữ liệu.

Kiểm tra phương pháp puttodoitem

Mẫu này sử dụng cơ sở dữ liệu trong bộ nhớ phải được khởi tạo mỗi khi ứng dụng được bắt đầu. Phải có một mục trong cơ sở dữ liệu trước khi bạn thực hiện cuộc gọi. Gọi nhận để đảm bảo có một mục trong cơ sở dữ liệu trước khi thực hiện cuộc gọi.

Cập nhật mục việc cần làm có ID = 1 và đặt tên của nó thành

dotnet dev-certs https --trust
71:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator
0

Hình ảnh sau đây cho thấy bản cập nhật Postman:

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Phương thức Deletetodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
73:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator
1

Kiểm tra phương thức DeletetOdoItem

Sử dụng Postman để xóa một mục việc cần làm:

  • Đặt phương thức thành
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    54.
  • Đặt URI của đối tượng để xóa (ví dụ
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    24).
  • Chọn Gửi.Send.

Ngăn chặn quá mức

Hiện tại ứng dụng mẫu hiển thị toàn bộ đối tượng

dotnet dev-certs https --trust
05. Các ứng dụng sản xuất thường giới hạn dữ liệu đầu vào và được trả về bằng cách sử dụng một tập hợp con của mô hình. Có nhiều lý do đằng sau điều này và bảo mật là một lý do chính. Tập hợp con của mô hình thường được gọi là đối tượng truyền dữ liệu (DTO), mô hình đầu vào hoặc mô hình xem. DTO được sử dụng trong bài viết này.DTO is used in this article.

Một DTO có thể được sử dụng để:

  • Ngăn chặn quá mức.
  • Ẩn các thuộc tính mà khách hàng không được phép xem.
  • Bỏ qua một số thuộc tính để giảm kích thước tải trọng.
  • Biểu đồ đối tượng phẳng có chứa các đối tượng lồng nhau. Biểu đồ đối tượng phẳng có thể thuận tiện hơn cho khách hàng.

Để chứng minh phương pháp DTO, hãy cập nhật lớp

dotnet dev-certs https --trust
05 để bao gồm một trường bí mật:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator
2

Trường bí mật cần được ẩn khỏi ứng dụng này, nhưng một ứng dụng hành chính có thể chọn để lộ nó.

Xác minh bạn có thể đăng và nhận trường bí mật.

Tạo mô hình DTO:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator
3

Cập nhật

dotnet dev-certs https --trust
24 để sử dụng
dotnet dev-certs https --trust
83:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator
4

Xác minh bạn không thể đăng hoặc nhận trường bí mật.

Gọi API Web với JavaScript

Xem Hướng dẫn: Gọi API Web ASP.NET Core với JavaScript.

Trong hướng dẫn này, bạn học cách:

  • Tạo một dự án API Web.
  • Thêm một lớp mô hình và bối cảnh cơ sở dữ liệu.
  • Giàn giáo Một bộ điều khiển với các phương pháp CRUD.
  • Định cấu hình định tuyến, đường dẫn URL và trả về giá trị.
  • Gọi API Web với Postman.

Cuối cùng, bạn có một API web có thể quản lý các mục "Việc cần làm" được lưu trữ trong cơ sở dữ liệu.

Tổng quan

Hướng dẫn này tạo ra API sau:

APISự mô tảYêu cầu cơ thểCơ thể phản ứng
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
3
Nhận tất cả các mặt hàng cần làmKhông cóMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDKhông cóMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDMảng các mặt hàng cần làmMảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Nhận một mục theo IDMảng các mặt hàng cần làmKhông có
Mảng các mặt hàng cần làm
[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
4
Không cóKhông có

Mảng các mặt hàng cần làm

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Điều kiện tiên quyết

Tạo một dự án web

  • Visual Studio
  • Visual Studio Code
  • Visual Studio cho Mac
  • Từ menu Tệp, chọn New> Project.File menu, select New > Project.
  • Chọn mẫu ứng dụng web ASP.NET Core và nhấp vào Tiếp theo.ASP.NET Core Web Application template and click Next.
  • Đặt tên cho dự án TODOAPI và nhấp vào Tạo.Create.
  • Trong hộp thoại Tạo ứng dụng web ASP.NET Core mới, xác nhận rằng .NET Core và ASP.NET Core 3.1 được chọn. Chọn mẫu API và nhấp vào Tạo.Create a new ASP.NET Core Web Application dialog, confirm that .NET Core and ASP.NET Core 3.1 are selected. Select the API template and click Create.

Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Mở thiết bị đầu cuối tích hợp.

  • Thay đổi thư mục (

    [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    8) vào thư mục sẽ chứa thư mục dự án.

  • Chạy các lệnh sau:

    dotnet new webapi -o TodoApi
    cd TodoApi
    dotnet add package Microsoft.EntityFrameworkCore.InMemory
    code -r ../TodoApi
    
  • Khi một hộp thoại hỏi bạn có muốn thêm tài sản cần thiết vào dự án không, chọn Có.Yes.

    Các lệnh trước:

    • Tạo một dự án API Web mới và mở nó trong Visual Studio Code.
    • Thêm các gói Nuget được yêu cầu trong phần tiếp theo.
  • Chọn Tệp> Giải pháp mới.File > New Solution.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Trong Visual Studio cho Mac sớm hơn phiên bản 8.6, chọn .NET Core> Ứng dụng> API> Tiếp theo. Trong phiên bản 8.6 trở lên, chọn Web và Bảng điều khiển> Ứng dụng> API> Tiếp theo..NET Core > App > API > Next. In version 8.6 or later, select Web and Console > App > API > Next.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Trong cấu hình hộp thoại API API ASP.NET Core mới, chọn khung đích .NET Core 3.x mới nhất. Chọn Tiếp theo.Configure the new ASP.NET Core Web API dialog, select the latest .NET Core 3.x Target Framework. Select Next.

  • Nhập TODOAPI cho tên dự án và sau đó chọn Tạo.Project Name and then select Create.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

Truy cập một thiết bị đầu cuối lệnh trên Mac

Lần đầu tiên truy cập vào một thiết bị đầu tiên trên Mac yêu cầu cấu hình cài đặt sau:

  • Điều hướng đến Tùy chọn hệ thống> Bàn phím> Phím tắt> Dịch vụ.System Preferences > Keyboard > Shortcuts > Services.
  • Trong các tệp và thư mục, xác minh thiết bị đầu cuối mới tại thư mục được chọn.Files and Folders, verify New Terminal at Folder is selected.

Các hướng dẫn trước cho phép truy cập vào một thiết bị đầu cuối lệnh theo hai cách: từ bên trong Visual Studio hoặc từ Finder.Visual Studio or from Finder.

Để truy cập một thiết bị đầu cuối lệnh từ Visual Studio cho Mac:

  • Nhấp chuột phải vào tên dự án.
  • Điều hướng đến Công cụ> Mở trong thiết bị đầu cuối.Tools > Open in Terminal.

Để truy cập một thiết bị đầu cuối lệnh từ Finder:

  • Nhấp chuột phải vào thư mục mong muốn.
  • Ở dưới cùng của danh sách, chọn đầu cuối mới tại thư mục.New Terminal at Folder.

Mở một thiết bị đầu cuối lệnh trong thư mục dự án và chạy lệnh sau:

dotnet dev-certs https --trust
8

Kiểm tra API

Mẫu dự án tạo API

{
  "name": "walk dog",
  "isComplete": true
}
0. Gọi phương thức
namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
67 từ trình duyệt để kiểm tra ứng dụng.

  • Visual Studio
  • Visual Studio Code
  • Visual Studio cho Mac

Từ menu Tệp, chọn New> Project.

Chọn mẫu ứng dụng web ASP.NET Core và nhấp vào Tiếp theo.Yes. In the Security Warning dialog that appears next, select Yes.

Đặt tên cho dự án TODOAPI và nhấp vào Tạo.

Trong hộp thoại Tạo ứng dụng web ASP.NET Core mới, xác nhận rằng .NET Core và ASP.NET Core 3.1 được chọn. Chọn mẫu API và nhấp vào Tạo.Run > Start Debugging to launch the app. Visual Studio for Mac launches a browser and navigates to

{
  "name": "walk dog",
  "isComplete": true
}
3, where
{
  "name": "walk dog",
  "isComplete": true
}
2 is a randomly chosen port number. An HTTP 404 (Not Found) error is returned. Append
namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
73 to the URL (change the URL to
dotnet dev-certs https --trust
04).

Mở thiết bị đầu cuối tích hợp.

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]

Thay đổi thư mục ([HttpPost] public async Task> PostTodoItem(TodoItem todoItem) { _context.TodoItems.Add(todoItem); await _context.SaveChangesAsync(); // return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem); } 8) vào thư mục sẽ chứa thư mục dự án.

Chạy các lệnh sau:

  • Khi một hộp thoại hỏi bạn có muốn thêm tài sản cần thiết vào dự án không, chọn Có.
  • Visual Studio Code
  • Visual Studio cho Mac
  • Các lệnh trước:Solution Explorer, right-click the project. Select Add > New Folder. Name the folder

    dotnet dev-certs https --trust
    
    06.

  • Tạo một dự án API Web mới và mở nó trong Visual Studio Code.Add > Class. Name the class TodoItem and select Add.

  • Thêm các gói Nuget được yêu cầu trong phần tiếp theo.

  • Chọn Tệp> Giải pháp mới.

  • Trong Visual Studio cho Mac sớm hơn phiên bản 8.6, chọn .NET Core> Ứng dụng> API> Tiếp theo. Trong phiên bản 8.6 trở lên, chọn Web và Bảng điều khiển> Ứng dụng> API> Tiếp theo.

  • Trong cấu hình hộp thoại API API ASP.NET Core mới, chọn khung đích .NET Core 3.x mới nhất. Chọn Tiếp theo.Add > New Folder. Name the folder

    dotnet dev-certs https --trust
    
    06.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Nhập TODOAPI cho tên dự án và sau đó chọn Tạo.Add > New File > General > Empty Class.

  • Truy cập một thiết bị đầu cuối lệnh trên MacNew.

  • Thêm các gói Nuget được yêu cầu trong phần tiếp theo.

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator
8

Chọn Tệp> Giải pháp mới.

Trong Visual Studio cho Mac sớm hơn phiên bản 8.6, chọn .NET Core> Ứng dụng> API> Tiếp theo. Trong phiên bản 8.6 trở lên, chọn Web và Bảng điều khiển> Ứng dụng> API> Tiếp theo.

Trong cấu hình hộp thoại API API ASP.NET Core mới, chọn khung đích .NET Core 3.x mới nhất. Chọn Tiếp theo.

Nhập TODOAPI cho tên dự án và sau đó chọn Tạo.

  • Visual Studio
  • Truy cập một thiết bị đầu cuối lệnh trên Mac

Lần đầu tiên truy cập vào một thiết bị đầu tiên trên Mac yêu cầu cấu hình cài đặt sau:

  • Điều hướng đến Tùy chọn hệ thống> Bàn phím> Phím tắt> Dịch vụ.Tools menu, select NuGet Package Manager > Manage NuGet Packages for Solution.
  • Trong các tệp và thư mục, xác minh thiết bị đầu cuối mới tại thư mục được chọn.Browse tab, and then enter Microsoft.EntityFrameworkCore.InMemory in the search box.
  • Các hướng dẫn trước cho phép truy cập vào một thiết bị đầu cuối lệnh theo hai cách: từ bên trong Visual Studio hoặc từ Finder.Microsoft.EntityFrameworkCore.InMemory in the left pane.
  • Để truy cập một thiết bị đầu cuối lệnh từ Visual Studio cho Mac:Project checkbox in the right pane and then select Install.

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Nhấp chuột phải vào tên dự án.

  • Điều hướng đến Công cụ> Mở trong thiết bị đầu cuối.Add > Class. Name the class TodoContext and click Add.
  • Để truy cập một thiết bị đầu cuối lệnh từ Finder:

  • Nhấp chuột phải vào thư mục mong muốn.

    using Microsoft.EntityFrameworkCore;
    using TodoApi.Models;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddControllers();
    builder.Services.AddDbContext(opt =>
        opt.UseInMemoryDatabase("TodoList"));
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
    app.UseHttpsRedirection();
    
    app.UseAuthorization();
    
    app.MapControllers();
    
    app.Run();
    
    1

Đăng ký bối cảnh cơ sở dữ liệu

Trong ASP.NET Core, các dịch vụ như bối cảnh DB phải được đăng ký với thùng chứa tiêm phụ thuộc (DI). Container cung cấp dịch vụ cho bộ điều khiển.

Cập nhật

namespace TodoApi.Models;

public class TodoItem
{
    public long Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
02 với mã được tô sáng sau:

dotnet-aspnet-codegenerator controller -name TodoItemsController -async -api -m TodoItem -dc TodoContext -outDir Controllers
0

Mã trước:

  • Loại bỏ các khai báo
    dotnet dev-certs https --trust
    
    21 chưa được sử dụng.
  • Thêm bối cảnh cơ sở dữ liệu vào thùng chứa DI.
  • Chỉ định rằng bối cảnh cơ sở dữ liệu sẽ sử dụng cơ sở dữ liệu trong bộ nhớ.

Giàn giáo một bộ điều khiển

  • Visual Studio
  • Visual Studio Code / Visual Studio cho Mac
  • Nhấp chuột phải vào thư mục bộ điều khiển.

  • Chọn Thêm> Vật phẩm mới.Add > New Scaffolded Item.

  • Chọn Bộ điều khiển API với các hành động, sử dụng khung thực thể, sau đó chọn Thêm.API Controller with actions, using Entity Framework, and then select Add.

  • Trong bộ điều khiển API Thêm với các hành động, sử dụng hộp thoại Entity Framework:Add API Controller with actions, using Entity Framework dialog:

    • Chọn TODOITEM (TODOAPI.Models) trong lớp mô hình.TodoItem (TodoApi.Models) in the Model class.
    • Chọn Todocontext (TODOAPI.Models) trong lớp ngữ cảnh dữ liệu.TodoContext (TodoApi.Models) in the Data context class.
    • Chọn Thêm.Add.

Chạy các lệnh sau:

dotnet-aspnet-codegenerator controller -name TodoItemsController -async -api -m TodoItem -dc TodoContext -outDir Controllers
1

Các lệnh trước:

  • Thêm các gói Nuget cần thiết cho giàn giáo.
  • Cài đặt động cơ giàn giáo (
    dotnet dev-certs https --trust
    
    23).
  • Giàn giáo
    dotnet dev-certs https --trust
    
    24.

Mã được tạo:

  • Đánh dấu lớp với thuộc tính
    dotnet dev-certs https --trust
    
    25. Thuộc tính này chỉ ra rằng bộ điều khiển đáp ứng các yêu cầu API Web. Để biết thông tin về các hành vi cụ thể mà thuộc tính cho phép, hãy xem Tạo API Web với ASP.NET Core.
  • Sử dụng DI để tiêm bối cảnh cơ sở dữ liệu (
    dotnet dev-certs https --trust
    
    26) vào bộ điều khiển. Bối cảnh cơ sở dữ liệu được sử dụng trong mỗi phương thức CRUD trong bộ điều khiển.

Các mẫu lõi ASP.NET cho:

  • Bộ điều khiển có chế độ xem bao gồm
    dotnet dev-certs https --trust
    
    27 trong mẫu tuyến đường.
  • Bộ điều khiển API không bao gồm
    dotnet dev-certs https --trust
    
    27 trong mẫu tuyến đường.

Khi mã thông báo

dotnet dev-certs https --trust
27 không nằm trong mẫu tuyến đường, tên hành động được loại trừ khỏi tuyến đường. Đó là, tên phương thức liên quan của hành động không được sử dụng trong tuyến đường phù hợp.

Kiểm tra phương thức tạo posttodoitem

Thay thế câu lệnh trả về trong

dotnet dev-certs https --trust
30 để sử dụng toán tử tên:

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
4

Mã trước là một phương thức bài HTTP, như được biểu thị bằng thuộc tính

dotnet dev-certs https --trust
32. Phương pháp nhận được giá trị của mục việc cần làm từ phần thân của yêu cầu HTTP.

Để biết thêm thông tin, hãy xem định tuyến thuộc tính với các thuộc tính HTTP [động từ].

Phương thức tạo ra:

  • Trả về mã trạng thái HTTP 201 nếu thành công. HTTP 201 là phản hồi tiêu chuẩn cho phương thức bài HTTP tạo ra tài nguyên mới trên máy chủ.
  • Thêm một tiêu đề vị trí vào phản hồi. Tiêu đề
    dotnet dev-certs https --trust
    
    36 chỉ định URI của mục việc cần làm mới được tạo. Để biết thêm thông tin, xem 10.2.2 201 được tạo.
  • Tài liệu tham khảo hành động
    dotnet dev-certs https --trust
    
    37 để tạo URI tiêu đề
    dotnet dev-certs https --trust
    
    36. Từ khóa C#
    dotnet dev-certs https --trust
    
    39 được sử dụng để tránh mã hóa cứng tên hành động trong cuộc gọi
    dotnet dev-certs https --trust
    
    40.

Cài đặt người đưa thư

Hướng dẫn này sử dụng Postman để kiểm tra API Web.

  • Cài đặt người đưa thư
  • Hướng dẫn này sử dụng Postman để kiểm tra API Web.
  • Bắt đầu ứng dụng web.
  • Bắt đầu người đưa thư.SSL certificate verification:
    • Tắt xác minh chứng chỉ SSL:File > Settings (General tab), disable SSL certificate verification.
    • Postman cho Windows: Postman cho Tệp Windows> Cài đặt (Tab chung), Tắt xác minh chứng chỉ SSL.Postman > Settings (General tab), disable SSL certificate verification.

      Postman cho MacOS: Postman cho Windows Postman> Cài đặt (Tab chung), Tắt xác minh chứng chỉ SSL.

      Cảnh báo

Xác minh chứng chỉ SSL kích hoạt lại sau khi kiểm tra bộ điều khiển.

  • Kiểm tra posttodoitem với người đưa thư

  • Tạo một yêu cầu mới.

  • Đặt phương thức HTTP thành

    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    19.

  • Đặt URI thành

    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    20. Ví dụ,
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    21.Body tab.

  • Chọn tab Body.raw radio button.

  • Chọn nút radio thô.JSON (application/json).

  • Đặt loại thành JSON (Ứng dụng/JSON).

    using Microsoft.EntityFrameworkCore;
    using TodoApi.Models;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddControllers();
    builder.Services.AddDbContext(opt =>
        opt.UseInMemoryDatabase("TodoList"));
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
    app.UseHttpsRedirection();
    
    app.UseAuthorization();
    
    app.MapControllers();
    
    app.Run();
    
    5
  • Trong phần thân yêu cầu nhập JSON cho một mục việc cần làm:Send.

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

Chọn Gửi.

  • Kiểm tra URI tiêu đề vị trí với người đưa thưHeaders tab in the Response pane.

  • Chọn tab Tiêu đề trong ngăn Phản hồi.Location header value:

    Hướng dẫn dotnet api with mysql - dotnet api với mysql

  • Sao chép giá trị tiêu đề vị trí:

  • Đặt phương thức HTTP thành

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    61.

  • Trong phần thân yêu cầu nhập JSON cho một mục việc cần làm:Send.

Chọn Gửi.

Kiểm tra URI tiêu đề vị trí với người đưa thư

  • [HttpPost]
    public async Task> PostTodoItem(TodoItem todoItem)
    {
        _context.TodoItems.Add(todoItem);
        await _context.SaveChangesAsync();
    
        //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
        return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
    }
    
    3
  • Chọn tab Tiêu đề trong ngăn Phản hồi.

Sao chép giá trị tiêu đề vị trí:

  • namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    21
  • namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    24

Đặt phương thức HTTP thành

[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
61.

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
6

Đặt URI thành namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } } 23. Ví dụ, namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } } 24.

  • Kiểm tra posttodoitem với người đưa thư
  • Tạo một yêu cầu mới.GET.
  • Đặt phương thức HTTP thành
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    19.
  • Đặt URI thành
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    20. Ví dụ,
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    21.Two pane view in Postman.
  • Trong phần thân yêu cầu nhập JSON cho một mục việc cần làm:Send.

Chọn Gửi.

Kiểm tra URI tiêu đề vị trí với người đưa thư

Chọn tab Tiêu đề trong ngăn Phản hồi.

  • Sao chép giá trị tiêu đề vị trí:

    using Microsoft.EntityFrameworkCore;
    using TodoApi.Models;
    
    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddControllers();
    builder.Services.AddDbContext(opt =>
        opt.UseInMemoryDatabase("TodoList"));
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI();
    }
    
    app.UseHttpsRedirection();
    
    app.UseAuthorization();
    
    app.MapControllers();
    
    app.Run();
    
    7
  • Đặt phương thức HTTP thành

    [
        {
            "date": "2019-07-16T19:04:05.7257911-06:00",
            "temperatureC": 52,
            "temperatureF": 125,
            "summary": "Mild"
        },
        {
            "date": "2019-07-17T19:04:05.7258461-06:00",
            "temperatureC": 36,
            "temperatureF": 96,
            "summary": "Warm"
        },
        {
            "date": "2019-07-18T19:04:05.7258467-06:00",
            "temperatureC": 39,
            "temperatureF": 102,
            "summary": "Cool"
        },
        {
            "date": "2019-07-19T19:04:05.7258471-06:00",
            "temperatureC": 10,
            "temperatureF": 49,
            "summary": "Bracing"
        },
        {
            "date": "2019-07-20T19:04:05.7258474-06:00",
            "temperatureC": -1,
            "temperatureF": 31,
            "summary": "Chilly"
        }
    ]
    
    61.TodoItemsController, so the controller name is "TodoItems". ASP.NET Core routing is case insensitive.

  • Nếu thuộc tính

    dotnet dev-certs https --trust
    
    48 có mẫu tuyến đường (ví dụ:
    dotnet dev-certs https --trust
    
    53), hãy nối nó vào đường dẫn. Mẫu này không sử dụng một mẫu. Để biết thêm thông tin, hãy xem định tuyến thuộc tính với các thuộc tính HTTP [động từ].

Trong phương thức

dotnet dev-certs https --trust
37 sau đây,
dotnet dev-certs https --trust
55 là biến trình giữ chỗ cho định danh duy nhất của mục việc cần làm. Khi
dotnet dev-certs https --trust
37 được gọi, giá trị của
dotnet dev-certs https --trust
55 trong URL được cung cấp cho phương thức trong tham số
dotnet dev-certs https --trust
43 của nó.

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
8

Trả về giá trị

Loại trả về của các phương thức

dotnet dev-certs https --trust
59 và
dotnet dev-certs https --trust
37 là loại hành động. ASP.NET Core tự động tuần tự hóa đối tượng thành JSON và ghi JSON vào phần thân của thông báo phản hồi. Mã phản hồi cho loại trả lại này là 200, giả sử không có trường hợp ngoại lệ nào. Các ngoại lệ chưa được xử lý được dịch thành lỗi 5xx.

dotnet dev-certs https --trust
61 Các loại trả về có thể biểu thị một loạt các mã trạng thái HTTP. Ví dụ:
dotnet dev-certs https --trust
37 có thể trả về hai giá trị trạng thái khác nhau:

  • Nếu không có mục nào khớp với ID được yêu cầu, phương thức sẽ trả về mã lỗi 404.
  • Mặt khác, phương pháp trả về 200 với cơ thể phản hồi JSON. Trở lại
    dotnet dev-certs https --trust
    
    63 dẫn đến phản hồi HTTP 200.

Phương pháp puttodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
65:

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();
builder.Services.AddDbContext(opt =>
    opt.UseInMemoryDatabase("TodoList"));
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
9

dotnet dev-certs https --trust
65 tương tự như
dotnet dev-certs https --trust
30, ngoại trừ nó sử dụng HTTP. Phản hồi là 204 (không có nội dung). Theo thông số kỹ thuật của HTTP, một yêu cầu đặt yêu cầu khách hàng gửi toàn bộ thực thể được cập nhật, không chỉ các thay đổi. Để hỗ trợ cập nhật một phần, hãy sử dụng bản vá HTTP.

Nếu bạn gặp lỗi khi gọi

dotnet dev-certs https --trust
65, hãy gọi
[
    {
        "date": "2019-07-16T19:04:05.7257911-06:00",
        "temperatureC": 52,
        "temperatureF": 125,
        "summary": "Mild"
    },
    {
        "date": "2019-07-17T19:04:05.7258461-06:00",
        "temperatureC": 36,
        "temperatureF": 96,
        "summary": "Warm"
    },
    {
        "date": "2019-07-18T19:04:05.7258467-06:00",
        "temperatureC": 39,
        "temperatureF": 102,
        "summary": "Cool"
    },
    {
        "date": "2019-07-19T19:04:05.7258471-06:00",
        "temperatureC": 10,
        "temperatureF": 49,
        "summary": "Bracing"
    },
    {
        "date": "2019-07-20T19:04:05.7258474-06:00",
        "temperatureC": -1,
        "temperatureF": 31,
        "summary": "Chilly"
    }
]
61 để đảm bảo có một mục trong cơ sở dữ liệu.

Kiểm tra phương pháp puttodoitem

Mẫu này sử dụng cơ sở dữ liệu trong bộ nhớ phải được khởi tạo mỗi khi ứng dụng được bắt đầu. Phải có một mục trong cơ sở dữ liệu trước khi bạn thực hiện cuộc gọi. Gọi nhận để đảm bảo có một mục trong cơ sở dữ liệu trước khi thực hiện cuộc gọi.

Cập nhật mục việc cần làm có ID = 1 và đặt tên thành "Feed Fish":

dotnet-aspnet-codegenerator controller -name TodoItemsController -async -api -m TodoItem -dc TodoContext -outDir Controllers
8

Hình ảnh sau đây cho thấy bản cập nhật Postman:

Hướng dẫn dotnet api with mysql - dotnet api với mysql

Phương thức Deletetodoitem

Kiểm tra phương pháp

dotnet dev-certs https --trust
73:

dotnet-aspnet-codegenerator controller -name TodoItemsController -async -api -m TodoItem -dc TodoContext -outDir Controllers
9

Kiểm tra phương thức DeletetOdoItem

Sử dụng Postman để xóa một mục việc cần làm:

  • Đặt phương thức thành
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    54.
  • Đặt URI của đối tượng để xóa (ví dụ
    namespace TodoApi.Models;
    
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
    
    24).
  • Chọn Gửi.Send.

Ngăn chặn quá mức

Hiện tại ứng dụng mẫu hiển thị toàn bộ đối tượng

dotnet dev-certs https --trust
05. Các ứng dụng sản xuất thường giới hạn dữ liệu đầu vào và được trả về bằng cách sử dụng một tập hợp con của mô hình. Có nhiều lý do đằng sau điều này và bảo mật là một lý do chính. Tập hợp con của mô hình thường được gọi là đối tượng truyền dữ liệu (DTO), mô hình đầu vào hoặc mô hình xem. DTO được sử dụng trong bài viết này.DTO is used in this article.

Một DTO có thể được sử dụng để:

  • Ngăn chặn quá mức.
  • Ẩn các thuộc tính mà khách hàng không được phép xem.
  • Bỏ qua một số thuộc tính để giảm kích thước tải trọng.
  • Biểu đồ đối tượng phẳng có chứa các đối tượng lồng nhau. Biểu đồ đối tượng phẳng có thể thuận tiện hơn cho khách hàng.

Để chứng minh phương pháp DTO, hãy cập nhật lớp

dotnet dev-certs https --trust
05 để bao gồm một trường bí mật:

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
0

Trường bí mật cần được ẩn khỏi ứng dụng này, nhưng một ứng dụng hành chính có thể chọn để lộ nó.

Xác minh bạn có thể đăng và nhận trường bí mật.

Tạo mô hình DTO:

dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.Design -v 7.0.0-*
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 7.0.0-*
dotnet tool uninstall -g dotnet-aspnet-codegenerator
dotnet tool install -g dotnet-aspnet-codegenerator
3

Cập nhật

dotnet dev-certs https --trust
24 để sử dụng
dotnet dev-certs https --trust
83:

[HttpPost]
public async Task> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //    return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
2

Xác minh bạn không thể đăng hoặc nhận trường bí mật.

Gọi API Web với JavaScript

Xem Hướng dẫn: Gọi API Web ASP.NET Core với JavaScript.

Thêm hỗ trợ xác thực vào API Web

Nhận dạng Core ASP.NET thêm chức năng đăng nhập giao diện người dùng (UI) vào các ứng dụng web ASP.NET Core. Để bảo mật API và SPA Web, hãy sử dụng một trong những điều sau đây:

  • Azure Active Directory
  • Azure Active Directory B2C (Azure AD B2C)
  • Máy chủ nhận dạng Duende

Duende Identity Server là một Framework OpenID Connect và OAuth 2.0 cho ASP.NET Core. Máy chủ nhận dạng Duende cho phép các tính năng bảo mật sau:

  • Xác thực như một dịch vụ (AAAS)
  • Đăng nhập/Tắt (SSO) một lần trên nhiều loại ứng dụng
  • Kiểm soát truy cập cho API
  • Cổng liên đoàn

Để biết thêm thông tin, hãy xem Tài liệu Máy chủ Nhận dạng Duende (Trang web phần mềm Duende).

Xuất bản lên Azure

Để biết thông tin về triển khai Azure, hãy xem QuickStart: Triển khai ứng dụng web ASP.NET.

Tài nguyên bổ sung

Xem hoặc tải về mã mẫu cho hướng dẫn này. Xem cách tải xuống.

Để biết thêm thông tin, hãy xem các tài nguyên sau:

  • Tạo API Web với ASP.NET Core
  • Hướng dẫn: Tạo API Web tối thiểu với ASP.NET Core
  • Tài liệu API Web ASP.NET Core với Swagger / Openapi
  • Các trang dao cạo với cốt lõi khung thực thể trong ASP.NET Core - Hướng dẫn 1 trên 8
  • Định tuyến đến các hành động của bộ điều khiển trong ASP.NET Core
  • Bộ điều khiển Các loại trả về hành động trong API API ASP.NET Core
  • Triển khai các ứng dụng ASP.NET Core cho Dịch vụ ứng dụng Azure
  • Máy chủ và triển khai ASP.NET Core
  • Tạo API Web với ASP.NET Core

Nhận xét

Gửi và xem phản hồi cho