如何在最小使用参数绑定api在ASP。网络核心

利用参数绑定在ASP。网络核心7to convert request data to strongly typed parameters, improving both application performance and code maintainability.

  • 在Facebook上分享
  • 在Twitter上分享
  • 分享在LinkedIn
  • 在Reddit分享
  • 通过电子邮件分享
  • 印刷资源
两只手拿着拼图

是一种最小的apiAPI在ASP。网的核心,包括最少文件,功能,和依赖关系。最小的api允许您构建功能齐全的REST端点以最少的编码和配置。之一许多新的增强在ASP。网络核心7支持参数绑定在最小的api。

这篇文章的目的是给你一个头开始处理参数绑定在最小的api。使用本文中提供的代码示例,您应该Visual Studio 2022安装在您的系统。如果你不已经有一个副本,你可以在这里下载Visual Studio 2022

在Visual Studio 2022中创建一个最小的Web API项目

首先,让我们创建一个ASP。网络核心project in Visual Studio 2022. Follow these steps:

  1. 启动Visual Studio 2022 IDE。
  2. 点击“创建新项目。”
  3. 在“创建新项目”窗口中,选择“ASP。网络核心Web API” from the list of templates displayed.
  4. 单击Next。
  5. 在“配置您的新项目”窗口中,指定新项目的名称和位置。
  6. (可选)检查“解决方案和项目在同一个目录”复选框,根据您的喜好。
  7. 单击Next。
  8. 接下来,所示的“其他信息”窗口中取消选中该复选框,表示“使用控制器…”,因为在这个例子中我们将使用最小的api。离开“验证类型”设置为“无”(默认)。也不选“配置HTTPS”和“启用开放API支持”复选框。最后,确保“使码头工人”复选框不像我们不会使用这里码头工人。
  9. 单击Create。

我们将使用ASP。网络核心Web API project to work with parameter binding in the sections below.

参数绑定是什么?

参数绑定包括传入的HTTP请求数据映射到动作方法参数,允许开发人员来处理请求和响应在一个结构化的和有效的方式。

参数绑定简化了处理HTTP请求的过程,并允许开发人员专注于构建逻辑的API端点。最小的api在ASP。网络核心7offer several types of parameter binding including FromQuery, FromRoute, FromHeader, and FromBody.

为什么使用参数绑定?

这里有一些原因你应该使用参数绑定在最小的api。

  • 为了简化代码:使用参数绑定,开发者可以减少所需样板代码来处理传入的HTTP请求。代替手动解析查询字符串参数,路由数据,和请求,参数绑定允许开发人员定义动作方法参数和自动处理绑定过程的框架。
  • 提高代码的可维护性:利用参数绑定在最小的api,开发人员可以创建更易于维护的代码更容易理解和修改。绑定过程是标准化的、可预测的,方便开发人员原因如何在客户机和服务器之间的数据传输。
  • 提高应用程序的性能:参数绑定也可以帮助提高性能通过减少不必要的应用程序中的数据处理。例如,通过绑定请求主体特定的参数类型,该框架可以避免整个请求进行解析和反序列化的开销,而不是只关注相关数据所需的应用程序。
  • 处理复杂的数据类型:参数绑定可以用来处理复杂数据类型如嵌套对象、数组和集合。利用内置的绑定机制复杂数据类型,开发人员可以创建api,地址范围广泛的数据格式,而不需要编写额外的代码。

参数绑定是如何工作的呢?

参数绑定在最小的api在ASP。网络核心7works similarly to that of traditional ASP.NET Core applications. When a client makes an HTTP request to a minimal API, the request data is automatically mapped to action method parameters based on the parameter names and types. By default, the framework uses a convention-based approach to automatically map request data to action method parameters, but developers can also use explicit parameter binding to gain more control over this process.

与查询字符串参数绑定

使用参数绑定在最小的api在ASP。网络核心7,developers need to define action methods that accept parameters. For example, the following code snippet defines a minimal API endpoint that accepts a parameter from the query string.

var builder = WebApplication.CreateBuilder (args);应用var = builder.Build ();app.MapGet (" / hello”, ([FromQuery]字符串名称)= >{返回$“你好{名称}”;});app.Run ();

在这个例子中,[FromQuery]属性告诉框架来将参数名称绑定到名称查询字符串参数的值在HTTP请求。

使用依赖注入参数绑定

ASP。网络核心7, you can take advantage of dependency injection to bind parameters in the action methods of your API controllers. If the type is configured as a service, you no longer need to add the [FromServices] attribute to your method parameters. Consider the following code snippet.

[路线(“(控制器)”)][ApiController]公开课MyDemoController: ControllerBase{公共ActionResult (IDateTime dateTime) = > Ok (dateTime.Now);}

如果类型配置为一个服务,你不需要使用[FromServices]属性绑定参数。相反,您可以使用以下的代码来绑定参数使用依赖注入。

var builder = WebApplication.CreateBuilder (args);builder.Services。AddSingleton < IDateTime SystemDateTime > ();应用var = builder.Build ();app.MapGet (“/”(IDateTime dateTime) = > dateTime.Now);app.MapGet(“/演示”,([FromServices] IDateTime dateTime) = > dateTime.Now);app.Run ();

显式参数绑定在最小的api

显式参数绑定在最小的api在ASP。网络核心7is a technique that allows developers to have more control over the binding process by explicitly specifying the source of the data for a given parameter.

这是有用的在绑定的情况下行为不能从参数的名称或类型推断。在ASP。净7最小核心api,开发人员可以使用以下属性显式地指定一个参数的数据来源:

  • (FromQuery)指定参数值应该来自HTTP查询字符串。
  • (FromRoute)指定参数值应该来自HTTP请求的路由数据。
  • (FromHeader)指定参数值应采取从HTTP请求头。
  • (FromBody)指定参数值应该来自HTTP请求体。

例如,考虑以下最小API端点接受作者在请求主体类型的一个实例。

app.MapPost(“/演示”,([FromBody]作者作者)= >{/ /编写代码来处理作者对象});

在这种情况下,[FromBody]属性告诉框架来将参数绑定到请求体中的数据。如果没有指定这个属性,该框架将尝试使用其他可用资源绑定参数,如查询字符串或路由数据,在这种情况下可能不是我们想要的。

请注意,您还可以使用[AsParameters]属性查询参数直接映射到一个对象,而无需使用BindAsync或TryParse方法。

app.MapGet(“/显示”([AsParameters]作者作者)= >作者名字:{{返回$”。姓FirstName}: {author.LastName}”;});

自定义模型绑定在最小的api

自定义模型绑定允许开发人员定义自己的绑定逻辑复杂数据类型或场景,不能由缺省绑定机制。定制绑定使用api时尤其有用,需要数据转换或正常化之前,应用程序可以使用的数据。

在ASP。净7最小核心api,自定义模型绑定是通过实现IModelBinder接口或通过使用IModelBinderProvider IModelBinder接口的接口提供一个定制的实现为一个特定的数据类型。

要创建一个自定义绑定器模型,您需要实现IModelBinder接口和覆盖BindModelAsync方法。该方法以BindingContext参数,其中包含的信息请求和模型绑定。

在BindModelAsync方法中,您可以执行任何必要的数据转换和验证返回之前绑定模型。下面是一个例子的自定义模型绑定器将传入的JSON载荷Customer对象。

公共类CustomerModelBinder: IModelBinder{公共异步任务BindModelAsync (ModelBindingContext bindingContext) {var json =等待新StreamReader (bindingContext.HttpContext.Request.Body)。ReadToEndAsync ();var客户= JsonConvert.DeserializeObject <客户> (json);bindingContext。结果= ModelBindingResult.Success(客户);}}

在这个例子中,CustomerModelBinder类实现了IModelBinder BindModelAsync的接口,并提供一个定制的实现方法。方法从HTTP请求中读取JSON载荷的身体和反序列化成使用Newtonsoft Customer对象。Json库。由此产生的客户对象是作为一个成功的ModelBindingResult返回。

使用这个自定义最小的API端点模型绑定器,您可以使用[ModelBinder]属性参数。

app.MapPost(“/演示”,([ModelBinder (typeof (CustomerModelBinder))]客户客户)= >{/ /编写代码来处理客户对象});

在前面的代码示例中,[ModelBinder]属性指定客户参数应该绑定使用CustomerModelBinder类。

参数绑定简化了编写的代码来处理HTTP请求。它允许开发人员更容易地处理复杂的数据类型,而简化代码,提高代码可维护性,在构建的逻辑API端点。利用参数绑定在最小的api,开发人员可以创建高效、可维护、可扩展的api,满足他们的应用程序和用户的需要。

版权©2023 IDG通信公司。

如何选择low-code开发平台