API Management-principuttryck
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;
}
Användning
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), , , AddMilliseconds , , AddMinutes , AddMonths , AddSeconds AddTicks , AddYears , , Date Day , DayOfWeek , DaysInMonth DayOfYear IsLeapYear IsDaylightSavingTime MaxValue Hour , , MinValue Month Minute Millisecond Parse Second Now , , Subtract , Ticks , TimeOfDay , Today , , ToString , , UtcNow AddHours AddDays Add 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-body.true |
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-tokenvä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-tokenvä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:
- Principer i API Management
- Självstudie: Transformera och skydda API:er
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Lagringsplats för principfragment
- Skapa principer med Microsoft Copilot i Azure
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 en API Inspector-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 .