Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 21930|Respuesta: 1

[WebAPI] Definición de propiedad de ruta de la API web

[Copiar enlace]
Publicado en 28/4/2018 10:37:11 | | | |
ASP.NET enrutamiento de API web, en pocas palabras, es el proceso de mapear las solicitudes del cliente a las Acciones correspondientes. En el artículo "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings", experimenté la configuración de rutas mediante plantillas, convenciones y métodos HTTP, y la ventaja de este enfoque es que las plantillas de enrutamiento se colocan uniformemente en la clase WebApiConfig bajo la carpeta App_Start, lo cual es conveniente para la gestión, pero la desventaja es que no es lo suficientemente flexible.


REST trata todo como un recurso, y a veces, un recurso con recursos hijos, como Cliente y Pedidos, puede querer introducir una solicitud como clientes/1/pedidos, pero es difícil lograr esta ruta solo por convención. De hecho, ASP.NET Web API nos proporciona una función de Ruta, que puede conectarse directamente a Action, lo cual es muy flexible e intuitivo de usar.

Vamos a ver cómo usar la función de Ruta en ASP.NET MVC4.

Permitir el atributo Ruta


Primero tienes que configurarlo en WebApiConfig.



El método MapHttpAttributeRoutes anterior solo está disponible en versiones más recientes de ASP.NET Web APISi tu versión es relativamente baja, puedes desinstalar la versión antigua e instalar la última a través de la consola NuGet Package Manager.


A continuación, en Global.asax, necesitas comentar la forma original de registrar WebApiConfig y adoptar un nuevo método, como sigue:

En este momento, ejecutar el proyecto puede reportar el siguiente error:

Esto se debe a que, al descargar la última versión de ASP.NET Web API, también descargué la última versión de icrosoft. AspNet.WebApi.HelpPage。 Puedes desinstalar la última versión de HelpPage y descargar la versión anterior.

Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force
Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre


Usar la propiedad de Ruta

Crea una clase Cusomter.


Crea una clase de Orden.

Crea una clase de Base de Datos para obtener la colección de Pedidos.



Crea un controlador de API vacío escrito así:


Escribe lo siguiente en tu navegador:

Si usas ASP.NET MVC4 para el desarrollo, puede que obtengas el siguiente error cuando el programa se ejecute por primera vez:

[A] System.Web.WebPages.Razor.Configuration.HostSection no puede ser transmitida a [B]System.Web.WebPages.Razor.Configuration.HostSection. El Tipo A deriva de "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (en "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ en el contexto "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). El Tipo B deriva de "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (en contexto, "Default" en "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Archivos temporales de ASP.NET/vs/feb7ce97/a525d58a/asse


Esto se debe a que la última versión de Razor se utiliza al descargar la última versión de la API web de ASP.NET. Necesitas configurar la siguiente configuración en el directorio raíz de Web.config:


Utiliza la función RoutePrefix


Si quieres prefijar todas las Acciones en un controlador de API, puedes poner la función RoutePrefix en el controlador de API.

Por ejemplo, queremos que tenga un formato así: http://localhost/api/customers/1/orders


Modifica el OrdersController de esta manera.


También puedes usar ~ en la función Ruta para anular las reglas de prefijo de la Acción.



El prefijo definido por la característica RoutePrefix también puede tener variables de parámetro:


Restricciones de enrutamiento

Puedes restringir variables de parámetros en una ruta mediante "{nombre variable de parámetro: restricción}".


Arriba, si el id de la variable del fragmento es de tipo int, se enruta a la primera Acción, y si no, se enruta a la segunda Acción.

ASP.NET restricciones integradas de la API web incluyen:

{x:alpha} limita las letras mayúsculas y minúsculas
{x:bool}
{x:fechatiempo}
{x:decimal}
{x:doble}
{x:float}
{x:guid}
{x:int}
{x:longitud(6)}
{x:length(1,20)} limita el rango de longitud
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:rango(10,50)}
{x:regex(regex)}


Puedes establecer múltiples restricciones para una variable de parámetro al mismo tiempo:

Implementa la interfaz IHttpRouteConstraint para personalizar las reglas de restricción. Implementa una restricción que no pueda ser 0.


Registra una restricción personalizada en WebApiConfig en la carpeta App_Start.


Utiliza restricciones personalizadas.


Parámetros opcionales y sus valores por defecto

Si una variable de parámetro de enrutamiento es opcional, el parámetro también debe recibir un valor por defecto.


Añadir ? después de la restricción para indicar opcional, y establecer el valor por defecto de id en los parámetros del método.

Establece un nombre para la ruta



Prioridad de enrutamiento

La prioridad de ruta establecida por la propiedad Ruta se determina en base a las convenciones y la propiedad Routeorder.

Las convenciones son:

1. Variables fragmentarias estáticas
2. Fragmentar variables con restricciones
3. Fragmentar variables sin restricciones
4. Variable de fragmento comodín con restricciones
5. Variables de fragmento comodín no restringidas

El valor por defecto de la propiedad RouteOrder es 0, y cuanto menor es el valor de la propiedad, mayor es.


Arriba, el orden de prioridad para el enrutamiento es:

variable estática de fragmentos orders/details, el valor de la propiedad RouteOrder es 0
orders/{id} con variables de fragmento restringidas con valor 0 en la propiedad RouteOrder
orders/{customerName} es una variable fragment sin restricciones, y el valor de la propiedad RouteOrder es 0
orders/{*date} es una variable comodín de fragmento con un valor de 0 en la propiedad RouteOrder
órdenes/valor pendiente de la propiedad de RouteOrder de 1






Anterior:Lleva un registro de lo que se puede pagar con tarjeta de crédito
Próximo:No se puede proporcionar un proceso para un ADO.NET con el nombre fijo "MySql.Data.MySqlClient"...
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com