Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 21930|Отговор: 1

[WebAPI] уеб API Дефиниция на свойството на маршрута

[Копирай линк]
Публикувано в 28.04.2018 г. 10:37:11 ч. | | | |
ASP.NET Web API маршрутизационно, казано, е процесът на съпоставяне на клиентските заявки към съответните действия. В статията "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" имах опит да задавам маршрути чрез шаблони, конвенции и HTTP методи, а предимството на този подход е, че шаблоните за маршрутизиране са равномерно поставени в класа WebApiConfig под папката App_Start, което е удобно за управление, но недостатъкът е, че не е достатъчно гъвкав.


REST третира всичко като ресурс, а понякога ресурс с детски ресурси, като Customer и Orders, може да иска да въведе заявка като customers/1/orders, но е трудно да се постигне този път само по конвенция. Всъщност, ASP.NET Web API ни предоставя функция Route, която може да бъде директно свързана с Action, която е много гъвкава и интуитивна за използване.

Нека опитаме как да използваме функцията Route в ASP.NET MVC4.

Позволете атрибута Route


Първо трябва да го настроиш в WebApiConfig.



Горният метод MapHttpAttributeRoutes е наличен само в по-нови версии на ASP.NET Web APIАко версията ти е сравнително ниска, можеш да деинсталираш старата и да инсталираш най-новата през конзолата NuGet Package Manager.


След това, в Global.asax, трябва да коментирате оригиналния начин на регистрация на WebApiConfig и да приемете нов метод, както следва:

В този момент при изпълнение на проекта може да се съобщи следната грешка:

Това е така, защото при изтеглянето на последната версия на ASP.NET Web API, също така изтеглих последната версия на icrosoft. AspNet.WebApi.HelpPage。 Можете да деинсталирате последната версия на HelpPage и да изтеглите по-старата версия.

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


Използвайте свойството Route

Създай клас Cusomter.


Създай клас Order.

Създай клас за база данни, за да получиш колекцията Order.



Създайте празен API контролер, написан така:


Въведете следното в браузъра си:

Ако използвате ASP.NET MVC4 за разработка, може да получите следната грешка при първото стартиране на програмата:

[A] System.Web.WebPages.Razor.Configuration.HostSection не може да бъде излъчван към [B]System.Web.WebPages.Razor.Configuration.HostSection. Тип A произлиза от "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (в "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ в контекста "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Тип B произлиза от "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (в контекст "Default" в "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Временни ASP.NET файлове/vs/feb7ce97/a525d58a/asse


Това е така, защото най-новата версия на Razor се използва при изтегляне на най-новата версия на ASP.NET Web API. Трябва да конфигурирате следната конфигурация в кореновата директория на Web.config:


Използвайте функцията RoutePrefix


Ако искаш да префиксираш всички действия в API контролер, можеш да сложиш функцията RoutePrefix на API контролера.

Например, искаме да е във формат като следния: http://localhost/api/customers/1/orders


Модифицирай OrdersController по този начин.


Можете също да използвате ~ във функцията Маршрут, за да отмените правилата на префикса на действието.



Префиксът, дефиниран от функцията RoutePrefix, може също да има параметрични променливи:


Ограничения за маршрутизиране

Можете да ограничите параметричните променливи в маршрут чрез "{име на променлива на параметра: ограничение}".


По-горе, ако идентификаторът на фрагментната променлива е от тип int, той се маршрутизира към първото действие, а ако не е – към второто действие.

ASP.NET Вградените ограничения на уеб API включват:

{x:alpha} ограничава главни и малки букви
{x:bool}
{x:datetime}
{x:decimal}
{x:double}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} ограничава диапазона на дължината
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Можете да зададете няколко ограничения за променлива на параметъра едновременно:

Имплементирайте интерфейса IHttpRouteConstraint за персонализиране на правилата за ограничения. Имплементирайте ограничение, което не може да бъде 0.


Регистрирайте персонализирано ограничение в WebApiConfig в папката App_Start.


Използвайте персонализирани ограничения.


Опционални параметри и техните стандартни стойности

Ако променливата на маршрутизиращия параметър е по избор, параметърът също трябва да получи стойност по подразбиране.


Добавете ? след ограничението да посочите опционално и задайте стандартната стойност за id в параметрите на метода.

Задайте име на маршрута



Приоритет на маршрутизация

Приоритетът на маршрута, зададен от свойството Route, се определя въз основа на конвенции и свойството RouteOrder.

Конвенциите са:

1. Статични фрагментни променливи
2. Фрагментни променливи с ограничения
3. Фрагментиране на променливи без ограничения
4. Променлива с уайлдкард фрагмент с ограничения
5. Неограничени променливи на уайлдкард фрагменти

По подразбиране стойността на свойството RouteOrder е 0, и колкото по-малка е стойността на свойството, толкова по-висока е.


По-горе, редът на приоритет при маршрутизиране е:

orders/details статична фрагментна променлива, стойността на свойството RouteOrder е 0
orders/{id} с ограничени фрагментни променливи със стойност 0 в свойството RouteOrder
orders/{customerName} е фрагментна променлива без ограничения, а стойността на свойството RouteOrder е 0
orders/{*date} е променлива с уайлдкард фрагмент със стойност 0 в свойството RouteOrder
поръчки/чакаща стойност на свойството RouteOrder е 1






Предишен:Водете запис за това какво може да се плати с кредитна карта
Следващ:Не може да се предостави процес за ADO.NET с фиксирано име "MySql.Data.MySqlClient"...
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com