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:

Syntax

  • Uttryck för enstaka uttryck:
    • Omgiven i @(expression), där expression är en välformulerad C#-uttrycksinstrukitet.
  • Uttryck med flera uttryck:
    • Omgiven i @{expression}.
    • Alla kodsökvägar i uttryck med flera uttryck måste sluta med en return -instruktion.

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, AddSecondsAddTicks, AddYears, , DateDay, DayOfWeek, DaysInMonthDayOfYearIsLeapYearIsDaylightSavingTimeMaxValueHour, , MinValueMonthMinuteMillisecondParseSecondNow, , Subtract, Ticks, TimeOfDay, Today, , ToString, , UtcNowAddHoursAddDaysAddYear
System.DateTimeKind Utc
System.DateTimeOffset Alla
System.Decimal Alla
System.Double Alla
System.Enum Parse, , TryParseToString
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, , , TryParseToString
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, , LengthValue
System.Text.RegularExpressions.CaptureCollection Count, Item
System.Text.RegularExpressions.Group Captures, Success
System.Text.RegularExpressions.GroupCollection Count, Item
System.Text.RegularExpressions.Match Empty, , GroupsResult
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 tiden

GraphQL

LastError

Operation

Request

RequestId: Guid – unik begärandeidentifierare

Response

Subscription

Timestamp: DateTime – tidpunkt då begäran togs emot

Tracing: bool – anger om spårningen är på eller av

Användare

Variables: IReadOnlyDictionary<string, object>

void Trace(message: string)
context.Api Id: string

IsCurrentRevision: bool

Name: string

Path: string

Revision: string

ServiceUrl: IUrl

Version: string

Workspace: IWorkspace
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.LastErrorfinns 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

Workspace: IWorkspace
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
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() :
  • Använd den ursprungliga meddelandetextströmmen.
  • Rendera den inte tillgänglig när den har returnerats.

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
IWorkspace Id: string

Name: 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 falsemetoden .
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 nullmetoden .
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 falsemetoden .
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 krypteras

alg – namnet på en symmetrisk krypteringsalgoritm

key -Krypteringsnyckel

iv – initieringsvektor

Returnerar krypterad klartext.
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) input – klartext som ska krypteras

alg -Krypteringsalgoritm

Returnerar krypterad klartext.
byte[] Encrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) input – klartext som ska krypteras

alg -Krypteringsalgoritm

key -Krypteringsnyckel

iv – initieringsvektor

Returnerar krypterad klartext.
byte[] Decrypt(input: this byte[], alg: string, key:byte[], iv:byte[]) input - cypher text som ska dekrypteras

alg – namnet på en symmetrisk krypteringsalgoritm

key -Krypteringsnyckel

iv – initieringsvektor

Returnerar klartext.
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm) input - cypher text som ska dekrypteras

alg -Krypteringsalgoritm

Returnerar klartext.
byte[] Decrypt(input: this byte[], alg: System.Security.Cryptography.SymmetricAlgorithm, key:byte[], iv:byte[]) input - cypher text som ska dekrypteras

alg -Krypteringsalgoritm

key -Krypteringsnyckel

iv – initieringsvektor

Returnerar 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 – certifikatobjekt

Returnerar true om valideringen lyckas. false Om verifieringen misslyckas.

Mer information om hur du arbetar med principer finns i:

Mer information: