Bỏ qua nội dung chính
Trình duyệt này không còn được hỗ trợ.
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:
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 |
4 | Nhận một mục theo ID | Không có | Mảng các mặt hàng cần làm |
4 | Nhận một mục theo ID | Mảng các mặt hàng cần làm | Mảng các mặt hàng cần làm |
4 | Nhận một mục theo ID | Mảng 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 | 4 | Không có | 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
[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];
}
Nhận một mục theo ID
- Mục cần làm
5[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]; }
- Thêm một mục mới
6File menu, select New > Project.[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 một mục hiện tại & nbsp;
7 & nbsp; & nbsp;ASP.NET Core Web API template and select 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]; }
- 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 [
8] vào thư mục sẽ chứa thư mục dự án.Configure your new API dialog, make the following selections:[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]; }
- 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 [
8] vào thư mục sẽ chứa thư mục dự á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]; }
- 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
5[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]; }
- 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];
}
6Cậ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;Yes if you trust the IIS Express SSL certificate.Xóa một mục & nbsp; & nbsp;
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
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
04JSON 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
06.Solution Explorer, right-click the project. Select Add > New Folder. Name the folderdotnet dev-certs https --trust
06.dotnet dev-certs https --trust
- Nhấp chuột phải vào thư mục
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.dotnet dev-certs https --trust
- Thay thế mã mẫu bằng cách sau:
- Thêm một thư mục có tên
06.dotnet dev-certs https --trust
- Thêm tệp
09 vào thư mụcdotnet dev-certs https --trust
06 với mã sau:dotnet dev-certs https --trust
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
06.TodoAPI project and select Add > New Folder. Name the folderdotnet dev-certs https --trust
06.dotnet dev-certs https --trust
Bấm vào thư mục
06 và chọn Thêm> Lớp mới ...> Chung> Lớp trống.Add > New Class... > General > Empty Class.dotnet dev-certs https --trust
Đặ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.
dotnet dev-certs https --trust
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
06.Tools menu, select NuGet Package Manager > Manage NuGet Packages for Solution.dotnet dev-certs https --trust
- Nhấp chuột phải vào thư mục
06 và chọn Thêm> Lớp. Đặt tên cho lớp TODOITEM và chọn Thêm.Browse tab, and then enterdotnet dev-certs https --trust
9 in the search box.[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]; }
- Thay thế mã mẫu bằng cách sau:
- Thêm một thư mục có tên
06.Project checkbox in the right pane and then select Install.dotnet dev-certs https --trust
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:
dotnet dev-certs https --trust
dotnet dev-certs https --trust
- 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
06.Add > Class. Name the class TodoContext and click Add.dotnet dev-certs https --trust
- Bấm vào thư mục
06 và chọn Thêm> Lớp mới ...> Chung> Lớp trống.dotnet dev-certs https --trust
Đặ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ệ.
dotnet dev-certs https --trust
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.
[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];
}
- 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
06.Add > New Scaffolded Item.dotnet dev-certs https --trust
Nhấp chuột phải vào thư mục
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.dotnet dev-certs https --trust
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
06.TodoItem [TodoApi.Models] in the Model class.dotnet dev-certs https --trust
- Thêm tệp
09 vào thư mụcdotnet dev-certs https --trust
06 với mã sau:TodoContext [TodoApi.Models] in the Data context class.dotnet dev-certs https --trust
- 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
06.Add.dotnet dev-certs https --trust
Bấm vào thư mục
06 và chọn Thêm> Lớp mới ...> Chung> Lớp trống.Add to try scaffolding a second time.dotnet dev-certs https --trust
- Thêm một thư mục có tên
Đặt tên cho lớp TODOITEM, sau đó chọn Tạo.
- Thuộc tính
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 thedotnet dev-certs https --trust
22 project folder. Run the following commands:dotnet dev-certs https --trust
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
9 ở khung bên trá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]; }
- 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
06 và chọn Thêm> Lớp. Kể tên lớp Todocontext và nhấp vào Thêm.dotnet dev-certs https --trust
- Thêm tệp
18 vào thư mụcdotnet dev-certs https --trust
06.dotnet dev-certs https --trust
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.
34 là phản hồi tiêu chuẩn cho phương thứcdotnet dev-certs https --trust
31 tạo ra một tài nguyên mới trên máy chủ.dotnet dev-certs https --trust
- Thêm một tiêu đề vị trí vào phản hồi. Tiêu đề
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.dotnet dev-certs https --trust
- Tài liệu tham khảo hành động
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ọidotnet dev-certs https --trust
40.dotnet dev-certs https --trust
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
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
42 vào hộp nhậpdotnet dev-certs https --trust
43, sau đó chọn Execute.Execute.dotnet dev-certs https --trust
Kiểm tra các phương pháp GET
Hai điểm cuối được thực hiện:
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[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]; }
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
50 của bộ điều khiển:dotnet dev-certs https --trust
0dotnet dev-certs https --trust
Thay thế
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.dotnet dev-certs https --trust
Nếu thuộc tính
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ừ].dotnet dev-certs https --trust
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
1Trả 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
63 dẫn đến phản hồidotnet dev-certs https --trust
64.dotnet dev-certs https --trust
Phương pháp puttodoitem
Kiểm tra phương pháp
dotnet dev-certs https --trust
65:dotnet dev-certs https --trust
2dotnet 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
3Kiể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
78dotnet dev-certs https --trust
Để 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
4Trườ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
5Cập nhật
dotnet dev-certs https --trust
24 để sử dụng dotnet dev-certs https --trust
83:dotnet dev-certs https --trust
6Xá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:
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 |
4 | Nhận một mục theo ID | Không có | Mảng các mặt hàng cần làm |
4 | Nhận một mục theo ID | Mảng các mặt hàng cần làm | Mảng các mặt hàng cần làm |
4 | Nhận một mục theo ID | Mảng 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 | 4 | Không có | 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
[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];
}
Nhận một mục theo ID
- Mục cần làm
5[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]; }
- Thêm một mục mới
6File menu, select New > Project.[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 một mục hiện tại & nbsp;
7 & nbsp; & nbsp;ASP.NET Core Web API template and select 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]; }
- 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.
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.
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.
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.
[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];
}
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
5[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]; }
- 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];
}
6Cậ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;Yes if you trust the IIS Express SSL certificate.Xóa một mục & nbsp; & nbsp;
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 đó:
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ế
93 bằngdotnet dev-certs https --trust
94.dotnet dev-certs https --trust
- Thay thế
95 bằngdotnet dev-certs https --trust
96.dotnet dev-certs https --trust
- Thay thế
- 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
97 file from template.dotnet dev-certs https --trust
- 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ế
93 bằngdotnet dev-certs https --trust
94.dotnet dev-certs https --trust
- Thay thế
95 bằngdotnet dev-certs https --trust
96.dotnet dev-certs https --trust
- 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
97 từ mẫu.dotnet dev-certs https --trust
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
04Trang 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"
}
]
1Mã 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:
04dotnet dev-certs https --trust
- 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
06.dotnet dev-certs https --trust
Trong các thuộc tính \ LaunchsitingS.JSON, Cập nhật
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.[ { "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" } ]
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
05 duy nhất.dotnet dev-certs https --trust
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"
}
]
2Trong 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.
dotnet dev-certs https --trust
dotnet dev-certs https --trust
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:
04dotnet dev-certs https --trust
- 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
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.[ { "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" } ]
- 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
9 in the search box.[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]; }
- 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
05 duy nhất.Project checkbox in the right pane and then select Install.dotnet dev-certs https --trust
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:
3[ { "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 thế dotnet dev-certs https --trust
93 bằng dotnet dev-certs https --trust
94.
dotnet dev-certs https --trust
dotnet dev-certs https --trust
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"
}
]
4Chọ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
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.{ "name": "walk dog", "isComplete": true }
- Đối với Visual Studio cho Mac, xem phiên bản .NET 5 của hướng dẫn này.
- Trang Swagger
03 được hiển thị. Chọn Nhận> Thử nó ra> Thực thi. Trang hiển thị:dotnet dev-certs https --trust
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:
04dotnet dev-certs https --trust
- 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
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.[ { "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" } ]
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
05 duy nhất.TodoItem [TodoApi.Models] in the Model class.dotnet dev-certs https --trust
- 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.
- 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
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"
}
]
5Cá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 [
23].dotnet dev-certs https --trust
- Giàn giáo
24.dotnet dev-certs https --trust
Đố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
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.dotnet dev-certs https --trust
- Sử dụng DI để tiêm bối cảnh cơ sở dữ liệu [
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.dotnet dev-certs https --trust
Các mẫu lõi ASP.NET cho:
- Bộ điều khiển có chế độ xem bao gồm
27 trong mẫu tuyến đường.dotnet dev-certs https --trust
- Bộ điều khiển API không bao gồm
27 trong mẫu tuyến đường.dotnet dev-certs https --trust
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"
}
]
6Mã 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 đề
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.dotnet dev-certs https --trust
- Tài liệu tham khảo hành động
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ọidotnet dev-certs https --trust
40.dotnet dev-certs https --trust
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:
7[ { "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" } ]
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.
8[ { "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" } ]
Dưới đây là một ví dụ về đầu ra từ lệnh:
9[ { "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" } ]
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; }
}
0Dướ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; }
}
1Kiể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.
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[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]; }
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; }
}
2Dướ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; }
}
3Kiể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:
[
{
"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"
}
]
[
{
"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"
}
]
Kiểm tra các phương pháp GET
Hai điểm cuối được thực hiện:
0dotnet dev-certs https --trust
Bạn chỉ thấy một ví dụ về tuyến đường
46. Kiểm tra tuyến đườngdotnet dev-certs https --trust
47:TodoItemsController, so the controller name is "TodoItems". ASP.NET Core routing is case insensitive.dotnet dev-certs https --trust
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
63 dẫn đến phản hồi HTTP 200.dotnet dev-certs https --trust
Phương pháp puttodoitem
Kiểm tra phương pháp
dotnet dev-certs https --trust
65:dotnet dev-certs https --trust
2dotnet 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; }
}
7Dướ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; }
}
8Phương thức Deletetodoitem
Kiểm tra phương pháp
dotnet dev-certs https --trust
73:dotnet dev-certs https --trust
3Kiể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!;
}
0Dướ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!;
}
1Phươ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
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.dotnet dev-certs https --trust
- 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!;
}
4Trườ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:
dotnet dev-certs https --trust
dotnet dev-certs https --trust
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ị.
API | Sự mô tả | Yêu cầu cơ thể | Cơ thể phản ứng |
3 | Nhận tất cả các mặt hàng cần làm | Yêu cầu cơ thể | Cơ thể phản ứng |
3 | Nhận tất cả các mặt hàng cần làm | Cơ thể phản ứng | Cơ thể phản ứng |
3 | Nhận tất cả các mặt hàng cần làm | Cơ thể phản ứng | Yêu cầu cơ thể |
Cơ thể phản ứng | 3 | Yêu cầu cơ thể | 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
[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];
}
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
4[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]; }
- 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.
5Create.[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]; }
- 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.
6[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 một mục hiện tại & nbsp;
7 & nbsp; & 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]; }
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.
Visual Studio Code.NET Core > App > API > Next. In version 8.6 or later, select Web and Console > App > API > Next.
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.
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
8Kiể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:
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ị:
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
1, trong đó{ "name": "walk dog", "isComplete": true }
2 là số cổng được chọn ngẫu nhiên.{ "name": "walk dog", "isComplete": true }
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 đó:
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"
}
]
77Chọ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
04Lệ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"
}
]
1Nế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
06.dotnet dev-certs https --trust
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
06.dotnet dev-certs https --trust
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[];
0Hộ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
9 in the search box.[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]; }
- Chọn
9 ở khung bên trá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]; }
- 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.
Thêm bối cảnh cơ sở dữ liệu Todocontext
- Nhấp chuột phải vào thư mục
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.dotnet dev-certs https --trust
- Thêm một lớp
26 vào thư mụcdotnet dev-certs https --trust
06.dotnet dev-certs https --trust
Nhập mã sau:
1using 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[];
Đă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[];
2Mã trước:
- Xóa các cuộc gọi vênh.
- Loại bỏ các khai báo
21 chưa được sử dụng.dotnet dev-certs https --trust
- 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[];
3Cá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 [
23].dotnet dev-certs https --trust
- Giàn giáo
24.dotnet dev-certs https --trust
Mã được tạo:
- Đánh dấu lớp với thuộc tính
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.dotnet dev-certs https --trust
- Sử dụng DI để tiêm bối cảnh cơ sở dữ liệu [
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.dotnet dev-certs https --trust
Các mẫu lõi ASP.NET cho:
- Bộ điều khiển có chế độ xem bao gồm
27 trong mẫu tuyến đường.dotnet dev-certs https --trust
- Bộ điều khiển API không bao gồm
27 trong mẫu tuyến đường.dotnet dev-certs https --trust
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[];
4Mã 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 đề
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.dotnet dev-certs https --trust
- Tài liệu tham khảo hành động
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ọidotnet dev-certs https --trust
40.dotnet dev-certs https --trust
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
19.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
Đặt URI thành
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.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
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].
5using 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[];
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í
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:
Sao chép giá trị tiêu đề vị trí:
Đặt phương thức HTTP thành
61.[ { "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" } ]
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í
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[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]; }
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.
21namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
24namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
Để 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[];
6Chọ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
19.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- Đặt URI thành
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.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- 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
50 của bộ điều khiển:dotnet dev-certs https --trust
7using 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[];
Thay thế
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.dotnet dev-certs https --trust
Nếu thuộc tính
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ừ].dotnet dev-certs https --trust
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[];
8Trả 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
63 dẫn đến phản hồi HTTP 200.dotnet dev-certs https --trust
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[];
9dotnet 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
0Hình ảnh sau đây cho thấy bản cập nhật Postman:
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
1Kiể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
54.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- Đặt URI của đối tượng để xóa [ví dụ
24].namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- 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
2Trườ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
3Cậ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
4Xá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:
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 |
4 | Nhận một mục theo ID | Không có | Mảng các mặt hàng cần làm |
4 | Nhận một mục theo ID | Mảng các mặt hàng cần làm | Mảng các mặt hàng cần làm |
4 | Nhận một mục theo ID | Mảng 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 | 4 | Không có | Không có |
Mảng các mặt hàng cần làm
Đ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.
Mở thiết bị đầu cuối tích hợp.
Thay đổi thư mục [
8] vào thư mục sẽ chứa thư mục dự á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]; }
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.
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.
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.
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
8Kiể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.
[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];
}
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
06.dotnet dev-certs https --trust
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
06.dotnet dev-certs https --trust
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
8Chọ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.
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.
1using 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[];
Đă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
0Mã trước:
- Loại bỏ các khai báo
21 chưa được sử dụng.dotnet dev-certs https --trust
- 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
1Cá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 [
23].dotnet dev-certs https --trust
- Giàn giáo
24.dotnet dev-certs https --trust
Mã được tạo:
- Đánh dấu lớp với thuộc tính
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.dotnet dev-certs https --trust
- Sử dụng DI để tiêm bối cảnh cơ sở dữ liệu [
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.dotnet dev-certs https --trust
Các mẫu lõi ASP.NET cho:
- Bộ điều khiển có chế độ xem bao gồm
27 trong mẫu tuyến đường.dotnet dev-certs https --trust
- Bộ điều khiển API không bao gồm
27 trong mẫu tuyến đường.dotnet dev-certs https --trust
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[];
4Mã 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 đề
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.dotnet dev-certs https --trust
- Tài liệu tham khảo hành động
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ọidotnet dev-certs https --trust
40.dotnet dev-certs https --trust
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
19.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
Đặt URI thành
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.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
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].
5using 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[];
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ưHeaders tab in the Response pane.
Chọn tab Tiêu đề trong ngăn Phản hồi.Location header value:
Sao chép giá trị tiêu đề vị trí:
Đặt phương thức HTTP thành
61.[ { "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" } ]
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ư
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]; }
- Chọn tab Tiêu đề trong ngăn Phản hồi.
Sao chép giá trị tiêu đề vị trí:
21namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
24namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
Đặ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.
namespace TodoApi.Models;
public class TodoItem
{
public long Id { get; set; }
public string? Name { get; set; }
public bool IsComplete { get; set; }
}
namespace TodoApi.Models;
public class TodoItem
{
public long Id { get; set; }
public string? Name { get; set; }
public bool IsComplete { get; set; }
}
- 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
19.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- Đặt URI thành
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.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- 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í:
7using 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[];
Đặt phương thức HTTP thành
61.TodoItemsController, so the controller name is "TodoItems". ASP.NET Core routing is case insensitive.[ { "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" } ]
Nếu thuộc tính
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ừ].dotnet dev-certs https --trust
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[];
8Trả 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
63 dẫn đến phản hồi HTTP 200.dotnet dev-certs https --trust
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[];
9dotnet 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
8Hình ảnh sau đây cho thấy bản cập nhật Postman:
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
9Kiể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
54.namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- Đặt URI của đối tượng để xóa [ví dụ
24].namespace TodoApi.Models; public class TodoItem { public long Id { get; set; } public string? Name { get; set; } public bool IsComplete { get; set; } }
- 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];
}
0Trườ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
3Cậ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];
}
2Xá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