Важность веб-API (интерфейса программирования веб-приложений) заключается в его ключевой роли в современной разработке программного обеспечения. Вот некоторые аспекты важности веб-API:
Веб-API являются неотъемлемой частью современной разработки программного обеспечения. Они способствуют модульности системы, масштабируемости и совместимости, а также предоставляют разработчикам мощные инструменты для создания различных типов приложений.
Вы можете использовать инструмент командной строки (Command-Line Интерфейс, CLI) для создания Web API-проект.Ниже приводитсясуществоватьв командной строкеиспользовать.NET CLI
Создать Основные этапы проекта:
Откройте терминал командной строки:
Перейдите в каталог хранения проекта.:
использоватьcd
Команда для входа в проект, который вы хотите сохранитьиз Оглавление,Например:
cd path/to/your/projects
бегатьdotnet new
Заказ:
использоватьdotnet new
Заказ Создать проект。существоватьздесь,насиспользоватьwebapi
Шаблон приходитсоздаватьодинWeb API-проект.
dotnet new webapi -n YourApiName
здесь-n
Параметры используются для указания проектаизимя。
Введите каталог проекта:
использоватьcd
Заказ进入新создаватьиз项目Оглавление:
cd YourApiName
Запустить проект:
использоватьdotnet run
Заказ启动应用程序。这将会编译并бегатьтыизWeb API-приложение:
dotnet run
После запуска приложения вы сможете увидеть выходные данные, включая порт, который приложение прослушивает.
Тестовый API:
https://localhost:5001/weatherforecast
,Это конечная точка API по умолчанию в примере.Выполнив описанные выше шаги, вы сможете успешно использовать .NET. CLI создает простую сеть API-проект.Вы можете в зависимости от проектаиз Нужно действовать дальшеизразвиватьи Конфигурация。Не забудьте проверить.csproj
документиStartup.cs
документ,Эти файлы содержат настройки запуска проекта.
Шаги по созданию проекта веб-API в Visual Studio 2022 следующие:
В веб-API маршрутизация — это процесс принятия решения о том, как сопоставить HTTP-запросы с контроллерами и методами действий. Понимание основных концепций маршрутизации веб-API имеет решающее значение для создания и проектирования конечных точек API. Вот некоторые ключевые понятия:
{controller}
, {action}
, {id}
ждать.Пример:[Route("api/[controller]/{id}")]
[HttpGet]
、[HttpPost]
Равные свойства,Каждый метод действия можно указать для ответа на команды HTTP.{controller=Home}/{action=Index}/{id?}
,表示контроллер默认为Home
,По умолчанию используется метод работыIndex
,иid
является необязательнымиз。[Route("api/[controller]/{id}")]
。Маршрутизация атрибутов широко используетсяиз Способ,в частностисуществоватьRESTful в API.id
Параметры — числа.,илииспользовать[Range]
проверка диапазона атрибутов。Url.Action
илиUrl.RouteUrl
и другие методы,Таким образом, вам не нужно жестко кодировать URL-адрес.,Вместо этого он опирается на шаблоны и параметры маршрутов.В .NET 6, вы можете легко создавать Интернет, используя инструменты командной строки. APIконтроллердобрый。Ниже приводитсяиспользовать.NET CLI
Заказ Создать класс контроллераиз Основные шаги:
Введите каталог проекта и используйте cd YourApiName
Введите каталог проекта.
Запустите следующую команду, чтобы создать класс контроллера:
dotnet add controller -n YourControllerName
здесь -n
Параметр используется для указания имени контроллера.
После выполнения приведенной выше команды вы увидите, что файл класса контроллера создан в Controllers
папка. По умолчанию имя класса контроллера заканчивается на Controller
окончание, например ValuesController.cs
。
Откройте созданный файл класса контроллера, и вы увидите класс контроллера по умолчанию, который содержит пример кода и обычно несколько примеров методов действий (Действие). Вы можете изменить, добавить или удалить эти методы операций в соответствии с вашими потребностями. Структура примера класса контроллера выглядит следующим образом:
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
namespace YourApiName.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class YourControllerNameController : ControllerBase
{
// GET: api/YourControllerName
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET: api/YourControllerName/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST: api/YourControllerName
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT: api/YourControllerName/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE: api/YourControllerName/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}
В веб-API ASP.NET Core правила маршрутизации определяют, как сопоставить URI HTTP-запроса с соответствующим контроллером и методом действия. Существует несколько способов определения правил маршрутизации, наиболее распространенными из которых являются маршрутизация по атрибутам и настройка глобальной маршрутизации. Вот краткое описание обоих методов:
[ApiController]
[Route("api/[controller]")]
public class YourControllerNameController : ControllerBase
{
// GET: api/YourControllerName
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET: api/YourControllerName/5
[HttpGet("{id}")]
public string Get(int id)
{
return "value";
}
// POST: api/YourControllerName
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT: api/YourControllerName/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE: api/YourControllerName/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
существоватьвышеиз例子середина,[Route]
特性用于指定контроллеризбазовая маршрутизация,исуществовать По принципу работыиспользоватьиз[HttpGet]
、[HttpPost]
Равные свойства表示对应изHTTPпредикати相对于контроллербазовая маршрутизацияизпуть。
Startup.cs
Глобальная в файле конфигурация маршрутизации。существовать ConfigureServices
используется в методе AddControllers
метод и передать Configure
Метод маршрутизации Конфигурация. Ниже приведен простой пример:public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
существуют В этом примере,MapControllers
По умолчанию метод будетиспользоватьсогласованный маршрут,То есть правила маршрутизации автоматически генерируются в соответствии с контроллером, методом работы и соглашением об именах. Например,YourControllerNameController
из Get
метод будет соответствовать /YourControllerName
。
ты все еще можешь Startup.cs
используется в файле MapControllerRoute
Метод настройки глобальной конфигурации маршрутизации, например:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "api/{controller}/{action}/{id?}");
});
}
существуют В этом примере,MapControllerRoute
метод используется для определения именованного маршрута, где {controller}
、{action}
、{id}
Это заполнитель, указывающий соответствующий контроллер, метод работы и дополнительный идентификатор. Таким образом, конфигурацию можно гибко адаптировать к потребностям вашего проекта.
Совет: Вы можете выбрать подходящий метод в соответствии с особенностями проекта, а иногда можно также смешивать маршрутизацию объектов и Глобальную конфигурация маршрутизации。
В АСП.НЕТ Core Web APIсередина,Модели данных часто используются для представления сущностей в приложении.,Эти сущности можно сопоставить с таблицами базы данных.、APIиз Ввод и выводждать.Ниже приводитсясоздаватьодин简单модель данныхиз Основные шаги:
существовать项目серединасоздаватьодин模型добрый:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
существуют В приведенном выше примере файл с именем Product
из модели данных, которая имеет Id
、Name
и Price
свойство.
Использование аннотаций к данным (необязательно):
System.ComponentModel.DataAnnotations
из аннотации в пространстве имен:using System.ComponentModel.DataAnnotations;
public class Product
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Range(0.01, double.MaxValue, ErrorMessage = "Price must be greater than 0.")]
public decimal Price { get; set; }
}
существовать В приведенном выше примере,использовать Понятно Required
и Range
Свойства для добавления правил проверки данных.
Использование контекста данных (необязательно):
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
существовать В приведенном выше примере,создавать Понятноодин ApplicationDbContext
класс, который наследуется от DbContext
и содержит Product
сущность из DbSet
свойство.
Настройка контекста данных (необязательно):
Startup.cs
В разделе Конфигурация подключения к базе данных и контекста данных:public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
// Other configurations...
}
существовать В приведенном выше примере,использовать ПонятноSQL База данных сервера, вам необходимо appsettings.json
Настройте строку подключения к базе данных в файле.
так,Вы создали простую модель данных.,И, при необходимости, сопоставить его с базой данных. существовать использовать эту модель данных в веб-API,Им можно управлять с контроллера существования.,例нравиться获取、создавать、Обновить и удалить данные.
В АСП.НЕТ Core Web APIсередина,DTO (объекты передачи данных) — обычная практика.,Позволяет передавать данные между клиентом и сервером.,В то же время он также может контролировать содержимое передаваемых данных. Ниже приведены основные шаги для передачи данных через DTO:
Создать класс DTO:
public class ProductDTO
{
public string Name { get; set; }
public decimal Price { get; set; }
}
существуют В приведенном выше примере файл с именем ProductDTO
класс изDTO, который содержит Name
и Price
свойство.
существоватьконтроллерсерединаиспользоватьDTOs:
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly ApplicationDbContext _context;
public ProductsController(ApplicationDbContext context)
{
_context = context;
}
// POST: api/products
[HttpPost]
public IActionResult CreateProduct([FromBody] ProductDTO productDTO)
{
if (productDTO == null)
{
return BadRequest("Product data is null.");
}
// Convert DTO to entity model
var product = new Product
{
Name = productDTO.Name,
Price = productDTO.Price
};
// Add to database
_context.Products.Add(product);
_context.SaveChanges();
// Return a response with DTO
var responseDTO = new ProductDTO
{
Name = product.Name,
Price = product.Price
};
return Ok(responseDTO);
}
}
существовать В приведенном выше примере,CreateProduct
Метод действия получает ProductDTO
объект,Преобразуйте его в твердотельную модель(Product
),Затем добавьте модель объекта в базу данных. наконец,проходитьсоздавать另одинDTOобъект来表示返回给客户端изданные。
Совет: Преимущество DTO заключается в том, что они позволяют уменьшить объем данных, передаваемых по сети, повысить производительность и гарантировать передачу только тех данных, которые необходимы клиенту. Кроме того, DTO также обеспечивают большую гибкость, поскольку вы можете настроить класс DTO в соответствии со своими потребностями.
В АСП.НЕТ Core Web В API вы можете использовать аннотации к данным (Data Annotations)и Fluent Validation 等Способ对модель данных Проверять。Ниже приводится其середина两种常见изметод:
System.ComponentModel.DataAnnotations
из аннотации в пространстве имен для проверки модели данных. Эти аннотации включают в себя [Required]
、[StringLength]
、[Range]
ждать.
Пример:using System.ComponentModel.DataAnnotations;
public class Product
{
public int Id { get; set; }
[Required(ErrorMessage = "Name is required")]
public string Name { get; set; }
[Range(0.01, double.MaxValue, ErrorMessage = "Price must be greater than 0.")]
public decimal Price { get; set; }
}
существовать В приведенном выше примере,[Required]
используется для обеспечения Name
Свойства не могут быть пустыми и [Range]
используется для обеспечения Price
Атрибут существования указывает диапазон.
FluentValidation.AspNetCore
Сумка:dotnet add package FluentValidation.AspNetCore
Затем создайте класс валидатора, который наследует AbstractValidator<T>
class и определите правила проверки в конструкторе.
Пример:
using FluentValidation;
public class ProductValidator : AbstractValidator<Product>
{
public ProductValidator()
{
RuleFor(product => product.Name)
.NotEmpty().WithMessage("Name is required");
RuleFor(product => product.Price)
.GreaterThan(0).WithMessage("Price must be greater than 0.");
}
}
существовать Startup.cs
Документы ConfigureServices
В методе зарегистрируйте валидатор:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<ProductValidator>());
}
Затем,Вы можете проверить модель с помощью существующего контроллера и валидатора use. Если проверка не удалась,вернет сообщение об ошибкеиз BadRequest
ответ.
Пример:
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
private readonly IValidator<Product> _validator;
public ProductsController(IValidator<Product> validator)
{
_validator = validator;
}
// POST: api/products
[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
var validationResult = _validator.Validate(product);
if (!validationResult.IsValid)
{
return BadRequest(validationResult.Errors.Select(e => e.ErrorMessage));
}
// The rest of your code for creating the product...
return Ok("Product created successfully.");
}
}
В приведенном выше примере,CreateProduct
Метод действия получает Product
объект и использование ProductValidator
чтобы проверить. Если проверка не удалась, будет возвращено сообщение об ошибке. BadRequest
ответ; иначе,продолжит выполнятьсоздаватьпродуктизлогика。
В АСП.НЕТ Core Web API в процессе создания и конфигурации мы сначала используем .NET. CLI создает проект и понимает структуру проекта. Узнайте больше о Интернете Маршрутизация API из базовых концепций является ключевой и может быть достигнута с помощью маршрутизации функций или глобальной конфигурация маршрутизацииопределитьAPIконечная точка。Создать модель Данные являются основой для создания API, который можно использовать посредством аннотаций данных или Fluent. Валидация для проверки. Кроме того, использование DTO (объектов передачи данных) помогает эффективно передавать данные между клиентами и серверами и контролировать содержимое передаваемых данных. Наконец, реализован простой класс контроллера для демонстрации операций создания, чтения, обновления и удаления ресурсов. В целом, в результате этого процесса мы создали базовую версию ASP.NET. Core Web API,涉及Понятно路由、модель данных、Ключевые понятия, такие как проверка и передача данных. Это создает основу для дальнейшего развития и расширения.