Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla API Management-nivåer
I den här artikeln beskrivs syntaxen för principuttryck i C# 7. Varje uttryck har åtkomst till:
- Den implicit tillhandahållna kontextvariabeln .
- En tillåten delmängd av .NET Framework-typer.
Syntax
-
Uttryck för enstaka uttryck:
- Omgiven i
@(expression)
, därexpression
är en välformulerad C#-uttrycksinstrukitet.
- Omgiven i
-
Uttryck med flera uttryck:
- Omgiven i
@{expression}
. - Alla kodsökvägar i uttryck med flera uttryck måste sluta med en
return
-instruktion.
- Omgiven i
Exempel
@(true)
@((1+1).ToString())
@("Hi There".Length)
@(Regex.Match(context.Response.Headers.GetValueOrDefault("Cache-Control",""), @"max-age=(?<maxAge>\d+)").Groups["maxAge"]?.Value)
@(context.Variables.ContainsKey("maxAge") ? int.Parse((string)context.Variables["maxAge"]) : 3600)
@{
string[] value;
if (context.Request.Headers.TryGetValue("Authorization", out value))
{
if(value != null && value.Length > 0)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(value[0]));
}
}
return null;
}
Förbrukning
Om inte principreferensen anger något annat kan uttryck användas som attributvärden eller textvärden i en API Management-princip.
Viktigt!
När principen har definierats har principuttrycken endast begränsad verifiering. Uttryck körs av gatewayen vid körning. Eventuella undantag som genereras av principuttryck resulterar i ett körningsfel.
.NET Framework-typer som tillåts i principuttryck
I följande tabell visas de .NET Framework-typer och medlemmar som tillåts i principuttryck.
Typ | Medlemmar som stöds |
---|---|
Newtonsoft.Json.Formatting |
Alla |
Newtonsoft.Json.JsonConvert |
SerializeObject , DeserializeObject |
Newtonsoft.Json.Linq.Extensions |
Alla |
Newtonsoft.Json.Linq.JArray |
Alla |
Newtonsoft.Json.Linq.JConstructor |
Alla |
Newtonsoft.Json.Linq.JContainer |
Alla |
Newtonsoft.Json.Linq.JObject |
Alla |
Newtonsoft.Json.Linq.JProperty |
Alla |
Newtonsoft.Json.Linq.JRaw |
Alla |
Newtonsoft.Json.Linq.JToken |
Alla |
Newtonsoft.Json.Linq.JTokenType |
Alla |
Newtonsoft.Json.Linq.JValue |
Alla |
System.Array |
Alla |
System.BitConverter |
Alla |
System.Boolean |
Alla |
System.Byte |
Alla |
System.Char |
Alla |
System.Collections.Generic.Dictionary<TKey, TValue> |
Alla |
System.Collections.Generic.HashSet<T> |
Alla |
System.Collections.Generic.ICollection<T> |
Alla |
System.Collections.Generic.IDictionary<TKey, TValue> |
Alla |
System.Collections.Generic.IEnumerable<T> |
Alla |
System.Collections.Generic.IEnumerator<T> |
Alla |
System.Collections.Generic.IList<T> |
Alla |
System.Collections.Generic.IReadOnlyCollection<T> |
Alla |
System.Collections.Generic.IReadOnlyDictionary<TKey, TValue> |
Alla |
System.Collections.Generic.ISet<T> |
Alla |
System.Collections.Generic.KeyValuePair<TKey, TValue> |
Alla |
System.Collections.Generic.List<T> |
Alla |
System.Collections.Generic.Queue<T> |
Alla |
System.Collections.Generic.Stack<T> |
Alla |
System.Convert |
Alla |
System.DateTime |
(Konstruktor), , , Add , , AddDays , AddHours , AddMilliseconds AddMinutes , AddMonths , , AddSeconds AddTicks , AddYears , Date Day DayOfWeek DayOfYear DaysInMonth Hour , , IsDaylightSavingTime IsLeapYear MaxValue Millisecond Minute MinValue Month , , Now , Parse , Second , Subtract , , Ticks , , TimeOfDay Today ToString UtcNow Year |
System.DateTimeKind |
Utc |
System.DateTimeOffset |
Alla |
System.Decimal |
Alla |
System.Double |
Alla |
System.Enum |
Parse , , TryParse ToString |
System.Exception |
Alla |
System.Guid |
Alla |
System.Int16 |
Alla |
System.Int32 |
Alla |
System.Int64 |
Alla |
System.IO.StringReader |
Alla |
System.IO.StringWriter |
Alla |
System.Linq.Enumerable |
Alla |
System.Math |
Alla |
System.MidpointRounding |
Alla |
System.Net.IPAddress |
AddressFamily , Equals , GetAddressBytes , IsLoopback , Parse , , , TryParse ToString |
System.Net.WebUtility |
Alla |
System.Nullable |
Alla |
System.Random |
Alla |
System.SByte |
Alla |
System.Security.Cryptography.AsymmetricAlgorithm |
Alla |
System.Security.Cryptography.CipherMode |
Alla |
System.Security.Cryptography.HashAlgorithm |
Alla |
System.Security.Cryptography.HashAlgorithmName |
Alla |
System.Security.Cryptography.HMAC |
Alla |
System.Security.Cryptography.HMACMD5 |
Alla |
System.Security.Cryptography.HMACSHA1 |
Alla |
System.Security.Cryptography.HMACSHA256 |
Alla |
System.Security.Cryptography.HMACSHA384 |
Alla |
System.Security.Cryptography.HMACSHA512 |
Alla |
System.Security.Cryptography.KeyedHashAlgorithm |
Alla |
System.Security.Cryptography.MD5 |
Alla |
System.Security.Cryptography.Oid |
Alla |
System.Security.Cryptography.PaddingMode |
Alla |
System.Security.Cryptography.RNGCryptoServiceProvider |
Alla |
System.Security.Cryptography.RSA |
Alla |
System.Security.Cryptography.RSAEncryptionPadding |
Alla |
System.Security.Cryptography.RSASignaturePadding |
Alla |
System.Security.Cryptography.SHA1 |
Alla |
System.Security.Cryptography.SHA1Managed |
Alla |
System.Security.Cryptography.SHA256 |
Alla |
System.Security.Cryptography.SHA256Managed |
Alla |
System.Security.Cryptography.SHA384 |
Alla |
System.Security.Cryptography.SHA384Managed |
Alla |
System.Security.Cryptography.SHA512 |
Alla |
System.Security.Cryptography.SHA512Managed |
Alla |
System.Security.Cryptography.SymmetricAlgorithm |
Alla |
System.Security.Cryptography.X509Certificates.PublicKey |
Alla |
System.Security.Cryptography.X509Certificates.RSACertificateExtensions |
Alla |
System.Security.Cryptography.X509Certificates.X500DistinguishedName |
Name |
System.Security.Cryptography.X509Certificates.X509Certificate |
Alla |
System.Security.Cryptography.X509Certificates.X509Certificate2 |
Alla |
System.Security.Cryptography.X509Certificates.X509ContentType |
Alla |
System.Security.Cryptography.X509Certificates.X509NameType |
Alla |
System.Single |
Alla |
System.String |
Alla |
System.StringComparer |
Alla |
System.StringComparison |
Alla |
System.StringSplitOptions |
Alla |
System.Text.Encoding |
Alla |
System.Text.RegularExpressions.Capture |
Index , , Length Value |
System.Text.RegularExpressions.CaptureCollection |
Count , Item |
System.Text.RegularExpressions.Group |
Captures , Success |
System.Text.RegularExpressions.GroupCollection |
Count , Item |
System.Text.RegularExpressions.Match |
Empty , , Groups Result |
System.Text.RegularExpressions.Regex |
(Konstruktor), IsMatch , Match , Matches , Replace , Unescape , Split |
System.Text.RegularExpressions.RegexOptions |
Alla |
System.Text.StringBuilder |
Alla |
System.TimeSpan |
Alla |
System.TimeZone |
Alla |
System.TimeZoneInfo.AdjustmentRule |
Alla |
System.TimeZoneInfo.TransitionTime |
Alla |
System.TimeZoneInfo |
Alla |
System.Tuple |
Alla |
System.UInt16 |
Alla |
System.UInt32 |
Alla |
System.UInt64 |
Alla |
System.Uri |
Alla |
System.UriPartial |
Alla |
System.Xml.Linq.Extensions |
Alla |
System.Xml.Linq.XAttribute |
Alla |
System.Xml.Linq.XCData |
Alla |
System.Xml.Linq.XComment |
Alla |
System.Xml.Linq.XContainer |
Alla |
System.Xml.Linq.XDeclaration |
Alla |
System.Xml.Linq.XDocument |
Alla, utom Load |
System.Xml.Linq.XDocumentType |
Alla |
System.Xml.Linq.XElement |
Alla |
System.Xml.Linq.XName |
Alla |
System.Xml.Linq.XNamespace |
Alla |
System.Xml.Linq.XNode |
Alla |
System.Xml.Linq.XNodeDocumentOrderComparer |
Alla |
System.Xml.Linq.XNodeEqualityComparer |
Alla |
System.Xml.Linq.XObject |
Alla |
System.Xml.Linq.XProcessingInstruction |
Alla |
System.Xml.Linq.XText |
Alla |
System.Xml.XmlNodeType |
Alla |
Kontextvariabel
Variabeln context
är implicit tillgänglig i varje principuttryck. Dess medlemmar:
- Ange information som är relevant för API-begäran och -svar samt relaterade egenskaper.
- Är alla skrivskyddade.
Kontextvariabel | Tillåtna metoder, egenskaper och parametervärden |
---|---|
context |
Api : IApi Deployment Förflutit: TimeSpan – tidsintervall mellan värdet Timestamp för och den aktuella tidenGraphQL LastError Operation Request RequestId : Guid – unik begärandeidentifierareResponse Subscription Timestamp : DateTime – tidpunkt då begäran togs emotTracing : bool – anger om spårningen är på eller av Användare Variables : IReadOnlyDictionary<string, object> void Trace(message: string) Workspace |
context.Api |
Id : string IsCurrentRevision : bool Name : string Path : string Revision : string ServiceUrl : IUrl Version : string |
context.Deployment |
Gateway GatewayId : string (returnerar "hanterad" för hanterade gatewayer)Region : string ServiceId : string ServiceName : string Certificates : IReadOnlyDictionary<string, X509Certificate2> |
context.Deployment.Gateway |
Id : string (returnerar "hanterad" för hanterade gatewayer)InstanceId : string (returnerar "hanterad" för hanterade gatewayer)IsManaged : bool |
context.GraphQL |
GraphQLArguments : IGraphQLDataObject Parent : IGraphQLDataObject Exempel |
context.LastError |
Source : string Reason : string Message : string Scope : string Section : string Path : string PolicyId : string Mer information om context.LastError finns i Felhantering. |
context.Operation |
Id : string Method : string Name : string UrlTemplate : string |
context.Product |
ApprovalRequired : bool Groups : IEnumerable< IGroup > Id : string Name : string State : enum ProductState {NotPublished, Published} SubscriptionsLimit : int? SubscriptionRequired : bool |
context.Request |
Body : IMessageBody eller null om begäran inte har någon brödtext.Certificate : System.Security.Cryptography.X509Certificates.X509Certificate2 Headers : IReadOnlyDictionary<string, string[]> IpAddress : string MatchedParameters : IReadOnlyDictionary<string, string> Method : string OriginalUrl : IUrl Url : IUrl PrivateEndpointConnection : IPrivateEndpointConnection eller null om begäran inte kommer från en privat slutpunktsanslutning. |
string context.Request.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName : string defaultValue : string Returnerar värden för kommaavgränsade begäranderubriker eller defaultValue om rubriken inte hittas. |
context.Response |
Body : IMessageBody Headers : IReadOnlyDictionary<string, string[]> StatusCode : int StatusReason : string |
string context.Response.Headers.GetValueOrDefault(headerName: string, defaultValue: string) |
headerName : string defaultValue : string Returnerar kommaavgränsade svarshuvudvärden eller defaultValue om rubriken inte hittas. |
context.Subscription |
CreatedDate : DateTime EndDate : DateTime? Id : string Key : string Name : string PrimaryKey : string SecondaryKey : string StartDate : DateTime? |
context.User |
Email : string FirstName : string Groups : IEnumerable< IGroup > Id : string Identities : IEnumerable< IUserIdentity > LastName : string Note : string RegistrationDate : DateTime |
context.Workspace |
Id : string Name : string |
IApi |
Id : string Name : string Path : string Protocols : IEnumerable<string> ServiceUrl : IUrl SubscriptionKeyParameterNames : ISubscriptionKeyParameterNames |
IGraphQLDataObject |
TBD |
IGroup |
Id : string Name : string |
IMessageBody |
As<T>(bool preserveContent = false): Where T: string, byte[], JObject, JToken, JArray, XNode, XElement, XDocument – Metoderna context.Request.Body.As<T> och context.Response.Body.As<T> läser en brödtext för begäran eller svarsmeddelanden i den angivna typen T . -Eller- AsFormUrlEncodedContent(bool preserveContent = false) - Metoderna context.Request.Body.AsFormUrlEncodedContent() och context.Response.Body.AsFormUrlEncodedContent() läser URL-kodade formulärdata i en begäran eller svarsmeddelandetext och returnerar ett IDictionary<string, IList<string> objekt. Det avkodade objektet stöder IDictionary åtgärder och följande uttryck: ToQueryString() , JsonConvert.SerializeObject() , ToFormUrlEncodedContent(). Som standard As<T> är metoderna och AsFormUrlEncodedContent() :
För att undvika detta och låta metoden fungera på en kopia av brödtextströmmen anger du parametern preserveContent till , som du ser i exempel för principen set-bodytrue . |
IPrivateEndpointConnection |
Name : string GroupId : string MemberName : string Mer information finns i REST-API:et. |
IUrl |
Host : string Path : string Port : int Query : IReadOnlyDictionary<string, string[]> QueryString : string Scheme : string |
ISubscriptionKeyParameterNames |
Header : string Query : string |
string IUrl.Query.GetValueOrDefault(queryParameterName: string, defaultValue: string) |
queryParameterName : string defaultValue : string Returnerar kommaavgränsade frågeparametervärden eller defaultValue om parametern inte hittas. |
IUserIdentity |
Id : string Provider : string |
T context.Variables.GetValueOrDefault<T>(variableName: string, defaultValue: T) |
variableName : string defaultValue : T Returnerar gjutet variabelvärde till typ T eller defaultValue om variabeln inte hittas.Den här metoden utlöser ett undantag om den angivna typen inte matchar den faktiska typen av den returnerade variabeln. |
BasicAuthCredentials AsBasic(input: this string) |
input : string Om indataparametern innehåller ett giltigt huvudvärde för HTTP Basic Authentication-auktoriseringsbegäran returnerar metoden ett objekt av typen BasicAuthCredentials . Annars returnerar metoden null. |
bool TryParseBasic(input: this string, result: out BasicAuthCredentials) |
input : string result : out BasicAuthCredentials Om indataparametern innehåller ett giltigt HTTP Basic Authentication-auktoriseringsvärde i begärandehuvudet returneras true metoden och resultatparametern innehåller ett värde av typen BasicAuthCredentials . Annars returnerar false metoden . |
BasicAuthCredentials |
Password : string UserId : string |
Jwt AsJwt(input: this string) |
input : string Om indataparametern innehåller ett giltigt JWT-värde returnerar metoden ett objekt av typen Jwt . Annars returnerar null metoden . |
bool TryParseJwt(input: this string, result: out Jwt) |
input : string result : out Jwt Om indataparametern innehåller ett giltigt JWT-värde returnerar true metoden och resultatparametern innehåller ett värde av typen Jwt . Annars returnerar false metoden . |
Jwt |
Algorithm : string Audiences : IEnumerable<string> Claims : IReadOnlyDictionary<string, string[]> ExpirationTime : DateTime? Id : string Issuer : string IssuedAt : DateTime? NotBefore : DateTime? Subject : string Type : string |
string Jwt.Claims.GetValueOrDefault(claimName: string, defaultValue: string) |
claimName : string defaultValue : string Returnerar kommaavgränsade anspråksvärden eller defaultValue om rubriken inte hittas. |
byte[] Encrypt(input: this byte[], alg: string, key:byte[], iv:byte[]) |
input – klartext som ska krypterasalg – namnet på en symmetrisk krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar krypterad klartext. |
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) |
input – klartext som ska krypterasalg -KrypteringsalgoritmReturnerar krypterad klartext. |
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) |
input – klartext som ska krypterasalg -Krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar krypterad klartext. |
byte[] Decrypt(input: this byte[], alg: string, key:byte[], iv:byte[]) |
input - cypher text som ska dekrypterasalg – namnet på en symmetrisk krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar klartext. |
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) |
input - cypher text som ska dekrypterasalg -KrypteringsalgoritmReturnerar klartext. |
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) |
input - cypher text som ska dekrypterasalg -Krypteringsalgoritmkey -Krypteringsnyckeliv – initieringsvektorReturnerar klartext. |
bool VerifyNoRevocation(input: this System.Security.Cryptography.X509Certificates.X509Certificate2) |
Utför en X.509-kedjevalidering utan att kontrollera status för återkallade certifikat.input – certifikatobjektReturnerar true om valideringen lyckas. false Om verifieringen misslyckas. |
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Policyuttryck
- Ange eller redigera principer
- Återanvända policykonfigurationer
- Lagringsplats för principfragment
- Lagringsplats för principlekplats
- Principverktyg för Azure API Management
- Få Hjälp med Copilot för att skapa, förklara och felsöka principer
För mer information:
- Se hur du anger kontextinformation till serverdelstjänsten. Använd parametern Ange frågesträng och Ange HTTP-huvudprinciper för att ange den här informationen.
- Se hur du använder principen Verifiera JWT för att förauktorisera åtkomst till åtgärder baserat på tokenanspråk.
- Se hur du använder API-spårning för att identifiera hur principer utvärderas och resultatet av dessa utvärderingar.
- Se hur du använder uttryck med principerna Hämta från cache och Store till cache för att konfigurera cachelagring av API Management-svar. Ange en varaktighet som matchar svarscachelagringen för serverdelstjänsten enligt det som anges i den säkerhetskopierade tjänstens
Cache-Control
direktiv. - Se hur du utför innehållsfiltrering. Ta bort dataelement från svaret som tas emot från serverdelen med hjälp av principerna För kontrollflöde och Ange brödtext .
- Information om hur du laddar ned principinstruktionerna finns i GitHub-lagringsplatsen api-management-samples/policies .