Anleitung und Anforderungen für Lab-Einrichtung
Schützen Sie Ihr Konto und Ihren Fortschritt. Verwenden Sie immer den privaten Modus und Lab-Anmeldedaten, um dieses Lab auszuführen.

APIs mit Apigee X entwickeln und schützen: Challenge-Lab

Lab 2 Stunden 30 Minuten universal_currency_alt 5 Guthabenpunkte show_chart Mittelstufe
info Dieses Lab kann KI-Tools enthalten, die den Lernprozess unterstützen.
Dieser Inhalt ist noch nicht für Mobilgeräte optimiert.
Die Lernumgebung funktioniert am besten, wenn Sie auf einem Computer über einen per E‑Mail gesendeten Link darauf zugreifen.

GSP363

Logo: Google Cloud-Labs zum selbstbestimmten Lernen

Übersicht

In einem Challenge-Lab geht es um ein bestimmtes Szenario mit mehreren Aufgaben. Anders als bei einem normalen Lab erhalten Sie jedoch keine Schritt-für-Schritt-Anleitung, sondern nutzen die in den Labs des jeweiligen Kurses erlernten Fähigkeiten, um die Aufgaben selbst zu lösen. Ihre Lösungen werden automatisch bewertet. Die erzielten Punkte finden Sie rechts oben auf dieser Seite.

In Challenge-Labs werden keine neuen Grundlagen zu Google Cloud vermittelt. Sie sollen dabei Ihr Wissen erweitern und es wird erwartet, dass Sie beispielsweise Standardwerte ändern und Fehlermeldungen lesen und recherchieren, um Ihre eigenen Fehler zu beheben.

Die volle Punktzahl erreichen Sie nur, wenn Sie alle Aufgaben innerhalb der vorgegebenen Zeit lösen.

Dieses Lab wird Teilnehmern empfohlen, die alle Labs des Kurses APIs mit Apigee X entwickeln und schützen abgeschlossen haben. Sind Sie bereit?

Einrichtung

Vor dem Klick auf „Start Lab“ (Lab starten)

Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange Google Cloud-Ressourcen für das Lab verfügbar sind.

In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.

Für dieses Lab benötigen Sie Folgendes:

  • Einen Standardbrowser (empfohlen wird Chrome)
Hinweis: Nutzen Sie den privaten oder Inkognitomodus (empfohlen), um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.
  • Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Hinweis: Verwenden Sie für dieses Lab nur das Teilnehmerkonto. Wenn Sie ein anderes Google Cloud-Konto verwenden, fallen dafür möglicherweise Kosten an.

Das Szenario

Sie arbeiten als Cloud-Experte für Cymbal Shops, einen landesweit tätigen Einzelhändler. Cymbal Shops konzentriert sich auf den globalen Vertrieb und Übersetzungsdienste gelten als wichtiges Tool zur Ausweitung des globalen Geschäfts. Sie sind für die Erstellung der ersten Version einer Übersetzungs-API verantwortlich.

Das Know-how für diese Aufgaben wird vorausgesetzt, Sie erhalten daher keine detaillierte Anleitung.

Die Aufgabe

Sie erstellen einen neuen Apigee API-Proxy und andere Ressourcen in der Apigee-Organisation des Projekts. Lesen Sie sich die einzelnen Aufgabenbeschreibungen durch und erstellen Sie die erforderlichen Funktionen.

Fehler beim Speichern

Wenn Sie Änderungen an Ihrem API-Proxy speichern, kann der Fehler Could not save new revision (Neue Version konnte nicht gespeichert werden) auftreten. Wenn Sie im Drop-down-Menü „Speichern“ (Drop-down-Button „Speichern“) die Option Als neue Version speichern auswählen, sollte eine Fehlermeldung mit den ungültigen Punkten angezeigt werden.

Aufgabe 1: Cloud Translation API per Proxy aufrufen

Cymbal Shops hat sich entschieden, die Translation API von Google Cloud als Backend-Dienst für den API-Proxy zu verwenden.

Voraussetzungen:

  1. Prüfen Sie in der Google Cloud Console, ob die Cloud Translation API in der API-Bibliothek aktiviert ist.
  2. Erstellen Sie ein Dienstkonto für den API-Proxy mit dem Namen apigee-proxy und weisen Sie ihm die Rolle Logging > Logs Writer zu.
  3. Wählen Sie in der Google Cloud Console im Navigationsmenü die Option Apigee aus, um die Apigee-Benutzeroberfläche zu öffnen und Ihren API-Proxy zu erstellen.
  4. Der API-Proxy sollte ein Reverse-Proxy mit dem Namen translate-v1 und dem Basispfad /translate/v1 sein.
  5. Das Ziel des API-Proxys ist die HTTP-URL für die Basisversion der Cloud Translation API (https://translation.googleapis.com/language/translate/v2).
  6. Fügen Sie auf der Seite „Gemeinsame Richtlinien“ des Proxy-Assistenten keine Autorisierung, CORS oder Kontingente hinzu.
  7. Erstellen Sie auf der Übersichtsseite den API-Proxy mit den Standardeinstellungen.
  8. Fügen Sie dem Standard-TargetEndpoint einen Authentication-Abschnitt hinzu. Dadurch wird mit jeder Backend-Anfrage ein Zugriffstoken gesendet. Verwenden Sie ein GoogleAccessToken-Element mit dem Scope https://www.googleapis.com/auth/cloud-translation.
Hinweis: Bearbeiten Sie den Proxy und bearbeiten Sie auf dem Tab Entwickeln im Bereich Zielendpunkte die Datei „default.xml“.
  1. Prüfen Sie mit folgendem Cloud Shell-Skript, ob die Apigee-Laufzeit vollständig installiert ist:
export INSTANCE_NAME=eval-instance; export ENV_NAME=eval; export PREV_INSTANCE_STATE=; echo "waiting for runtime instance ${INSTANCE_NAME} to be active"; while : ; do export INSTANCE_STATE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}" | jq "select(.state != null) | .state" --raw-output); [[ "${INSTANCE_STATE}" == "${PREV_INSTANCE_STATE}" ]] || (echo; echo "INSTANCE_STATE=${INSTANCE_STATE}"); export PREV_INSTANCE_STATE=${INSTANCE_STATE}; [[ "${INSTANCE_STATE}" != "ACTIVE" ]] || break; echo -n "."; sleep 5; done; echo; echo "instance created, waiting for environment ${ENV_NAME} to be attached to instance"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo "***ORG IS READY TO USE***";

Wenn das Skript ORG IS READY TO USE zurückgibt, können Sie mit den nächsten Schritten fortfahren.

Hinweis: Während die Laufzeit installiert wird, können Sie sich schon einmal mit Aufgabe 2 beschäftigen.
  1. Speichern Sie den Proxy translate-v1 und stellen Sie ihn in der Umgebung eval mit folgendem Dienstkonto bereit:
apigee-proxy@{{{ project_0.project_id | PROJECT }}}.iam.gserviceaccount.com
  1. Testen Sie den API-Proxy.

Die Testumgebung in der Apigee-Organisation kann über den Hostnamen eval.example.com aufgerufen werden. Dieser DNS-Eintrag ist nur im internen Netzwerk verfügbar. Sie müssen also eine VM verwenden, die für Sie erstellt wurde.

  1. Öffnen Sie in Cloud Shell eine SSH-Verbindung zu apigeex-test-vm:
TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)") gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
  1. Wenn Sie zur Autorisierung aufgefordert werden, klicken Sie auf Autorisieren. Klicken Sie für jede Frage, die vom gcloud-Befehl gestellt wird, auf die Eingabetaste bzw. Return-Taste, um die Standardeingabe anzugeben.

  2. Nachdem Sie Aufgabe 1 abgeschlossen haben, sollte mit dem folgenden curl-Befehl der Text übersetzt werden:

curl -i -k -X POST "https://eval.example.com/translate/v1" -H "Content-Type: application/json" -d '{ "q": "Translate this text!", "target": "es" }'

Die Antwort sollte in etwa so aussehen:

{ "data": { "translations": [ { "translatedText": "¡Traduce este texto!", "detectedSourceLanguage": "en" } ] } } Hinweis: Bis Ihr API-Proxy vollständig bereitgestellt ist, erhalten Sie möglicherweise einige Minuten lang eine Fehlerantwort 502.

Klicken Sie auf Fortschritt prüfen. Cloud Translation API auf Proxy verwenden

Hinweis: Wenn kein grünes Häkchen angezeigt wird, klicken Sie rechts oben auf das Menü „Punktzahl“ und wählen Sie Fortschritt prüfen für den entsprechenden Schritt aus. In einem Pop-up-Fenster werden Tipps angezeigt.

Aufgabe 2: API-Anfrage und ‑Antwort ändern

Cymbal Shops möchte eine API erstellen, die sich von der Schnittstelle der Translation API unterscheidet. Es gibt zwei Translation API-Aufrufe, die geändert werden sollten.

Beim ersten Aufruf wird eine Liste gültiger Sprachen abgerufen.

Cloud Translation API-Anfrage:

REQUEST: POST https://translation.googleapis.com/language/translate/v2/languages Authorization: Bearer ACCESSTOKEN Content-Type: application/json { "target": "en" }

Cloud Translation API-Antwort:

Content-Type: application/json { "data": { "languages": [ { "language": "af", "name": "Afrikaans" }, { "language": "sq", "name": "Albanian" }, ... ] } }

translate-v1-Anfrage:

GET https://eval.example.com/translate/v1/languages

translate-v1-Antwort:

Content-Type: application/json [{"language":"af","name":"Afrikaans"},{"language":"sq","name":"Albanian"}, ... ]

Der API-Proxy muss den GET-Befehl durch einen POST-Befehl ersetzen, die Antwortfelder data und languages entfernen und den Zielsprachencode aus einem Attributsatz abrufen. Das Zugriffstoken wurde automatisch über den Authentication-Abschnitt in Aufgabe 1 hinzugefügt.

Der zweite Aufruf übersetzt Text in eine bestimmte Sprache.

Cloud Translation API-Anfrage:

POST https://translation.googleapis.com/language/translate/v2 Authorization: Bearer ACCESSTOKEN Content-Type: application/json { "q": "Hello world!", "target": "de" }

Cloud Translation API-Antwort:

Content-Type: application/json { "data": { "translations": [ { "translatedText": "Hallo Welt!", "detectedSourceLanguage": "en" } ] } }

translate-v1-Anfrage:

POST https://eval.example.com/translate/v1?lang=de Content-Type: application/json { "text": "Hello world!" }

translate-v1-Antwort:

Content-Type: application/json { "translated": "Hallo Welt!" }

Der API-Proxy muss die Zielsprache aus dem Abfrageparameter lang übernehmen und die Feldnamen für den eingehenden und den übersetzten Text ändern. Der Abfrageparameter lang kann optional in der translate-v1-Anfrage weggelassen werden. In diesem Fall wird die Zielsprache aus einem Attribut im Attributsatz übernommen.

Hinweis: Die Translation API akzeptiert entweder einen einzelnen String oder ein Stringarray für das Feld „q“. Ihre API sollte nur einen einzelnen String unterstützen.

Voraussetzungen:

  1. Erstellen Sie im API-Proxy einen Attributsatz mit dem Namen language.properties. Der Attributsatz sollte zwei Attribute haben: output mit dem Wert es und caller mit dem Wert en. Das Attribut caller gibt die Zielsprache an, die beim Auflisten der Sprachen verwendet wird (die Sprache für das Feld name). Mit output wird die Standardzielsprache angegeben, die verwendet werden soll, wenn der Anfrageparameter lang fehlt.

  2. Erstellen Sie im Proxy-Endpunkt einen bedingten Pfad- und Verb-Ablauf für die Ressource POST /. Geben Sie den Namen translate ein.

  3. Erstellen Sie im Proxy-Endpunkt einen bedingten Pfad-Ablauf (ohne Verb) für die Ressource /languages. Geben Sie den Namen getLanguages ein. (Verwenden Sie kein Verb. Sie ändern das Verb der Anfrage von GET (für die Eingabe an den Proxy) zu POST (erforderlich für das Backend). Wenn Sie ein Verb in die Bedingung aufnehmen, werden Antwortrichtlinien im Ablauf nicht ausgeführt, da request.verb nicht mehr mit GET identisch ist.)

  4. Erstellen Sie eine AssignMessage-Richtlinie mit dem Namen AM-BuildTranslateRequest, um die Backend-Anfrage für den bedingten translate-Ablauf zu erstellen.

Die Richtlinie sollte Folgendes enthalten:

  • Eine AssignVariable mit einer Vorlage zum Erstellen von Variablen, die später in einem Logeintrag verwendet werden. Für die Variable mit dem Namen text sollte die Funktion „jsonPath“ für Nachrichtenvorlagen verwendet werden, um das Feld text aus der Anfrage zu extrahieren.

  • Die Variable mit dem Namen language sollte mit der Funktion „firstnonnull“ für Nachrichtenvorlagen erstellt werden. Diese Variable sollte den Wert des Abfrageparameters lang enthalten, falls vorhanden, bzw. das Attribut output aus dem Attributsatz „language“ für die Zielsprache, wenn der Abfrageparameter lang nicht angegeben wurde.

  • In einem Set-Abschnitt sollte die vom Backend-Dienst benötigte JSON-Nutzlast festgelegt werden. Beide von Ihnen erstellten Variablen werden in der Nutzlast verwendet.

  • Das [AssignTo]-Element sollte die vorhandene Anfragenachricht verwenden.

    Die AssignVariable-Abschnitte in der AssignMessage-Richtlinie sollten in etwa so aussehen:

    <AssignVariable> <Name>...</Name> <Template>...</Template> <AssignVariable>
  1. Erstellen Sie unter dem bedingten Ablauf translate eine AssignMessage-Richtlinie mit dem Namen AM-BuildTranslateResponse, um die Antwort für den Aufrufer mit der Antwort der Translation API zu erstellen.

Die Richtlinie sollte Folgendes enthalten:

  • Eine AssignVariable mit einer jsonPath-Vorlage zum Erstellen der Variablen translated, die das Feld translatedText aus der Translation API-Antwort extrahiert. Hinweis: Der JSONPath-Ausdruck zum Extrahieren dieses Felds lautet $.data.translations[0].translatedText.

  • Setzen Sie createNew auf „true“.

  • Die neue JSON-Nutzlast verwendet die Variable translated.

    Die AssignVariable-Abschnitte in der AssignMessage-Richtlinie sollten in etwa so aussehen:

    <AssignVariable> <Name>...</Name> <Template>...</Template> <AssignVariable>
  1. Erstellen Sie eine AssignMessage-Richtlinie mit dem Namen AM-BuildLanguagesRequest, um die Backend-Anfrage für den bedingten getLanguages-Ablauf zu erstellen.

Die Richtlinie sollte Folgendes enthalten:

  • Verwenden Sie Set, um das richtige Verb und die richtige Nutzlast für die Backend-Anfrage festzulegen.

  • Das Attribut caller im Attributsatz language sollte für das Feld target in der Backend-Nutzlast verwendet werden.

  • Setzen Sie createNew auf „true“.

  • Legen Sie für die Nutzlast der Backend-Anfrage den Inhaltstyp application/json fest.

    Die AssignVariable-Abschnitte in der AssignMessage-Richtlinie sollten in etwa so aussehen:

    <AssignVariable> <Name>...</Name> <Set> ... </Set> </AssignVariable>
  1. Erstellen Sie unter dem bedingten getLanguages-Ablauf eine JavaScript-Richtlinie mit dem Namen JS-BuildLanguagesResponse, um die Antwort für den Aufrufer zu erstellen. Der JavaScript-Code sollte die folgenden Schritte ausführen:
  • Verwenden Sie context.getVariable, um die Variable response.content abzurufen.
  • Verwenden Sie JSON.parse, um das JSON response.content in ein Objekt zu konvertieren.
  • Verwenden Sie JSON.stringify, um das Feld data.languages im Objekt in JSON zu konvertieren.
  • Verwenden Sie context.setVariable, um response.content durch das JSON aus Schritt 3 zu ersetzen.

Ihr JavaScript-Code sollte in etwa so aussehen:

var payload = ...; var payloadObj = JSON.parse(...); var newPayload = JSON.stringify(...); context.setVariable(...); Hinweis: Achten Sie darauf, dass Sie die gewünschten Richtlinien in den richtigen bedingten Abläufen erstellen und die Richtlinienkonfigurationen in den entsprechenden XML-Dateien bearbeiten.
  1. Testen Sie die API. Verwenden Sie auf der VM apigeex-test-vm die folgenden curl-Befehle, um die oben gezeigten Beispiele zu testen:
  • Liste der Sprachen:

    curl -i -k -X GET "https://eval.example.com/translate/v1/languages"
  • In die angegebene Sprache übersetzen (Deutsch):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -d '{ "text": "Hello world!" }'
  • In die Standardsprache übersetzen (Spanisch):

    curl -i -k -X POST "https://eval.example.com/translate/v1" -H "Content-Type:application/json" -d '{ "text": "Hello world!" }'

Klicken Sie auf Fortschritt prüfen. API-Anfrage und ‑Antwort ändern

Hinweis: Wenn kein grünes Häkchen angezeigt wird, klicken Sie rechts oben auf das Menü „Punktzahl“ und wählen Sie Fortschritt prüfen für den entsprechenden Schritt aus. In einem Pop-up-Fenster werden Tipps angezeigt.

Aufgabe 3: API-Schlüsselüberprüfung und Kontingenterzwingung hinzufügen

Der Zugriff auf diese API sollte auf genehmigte Anwendungen beschränkt werden. Fügen Sie daher eine VerifyAPIKey-Richtlinie sowie eine Kontingentrichtlinie hinzu, um die Anzahl der Anfragen zu begrenzen.

Voraussetzungen:

  1. Erstellen Sie ein API-Produkt mit dem Namen und Anzeigenamen translate-product. Dieses API-Produkt sollte öffentlich zugänglich sein, Zugriffsanfragen automatisch genehmigen und in der Testumgebung verfügbar sein.

  2. Fügen Sie dem API-Produkt translate-product einen Vorgang hinzu. Der Vorgang sollte den Zugriff auf den translate-v1-Proxy ermöglichen und den Pfad / verwenden, der Zugriff auf alle Anfragen, einschließlich /, ermöglicht. Zulässige Methoden sind GET und POST. Fügen Sie eine Einstellung von 10 Anfragen pro Minute als Vorgangskontingent hinzu.

  3. Erstellen Sie einen Entwickler mit der E‑Mail-Adresse joe@example.com. Geben Sie dabei Ihren eigenen Vor- und Nachnamen sowie Nutzernamen ein.

  4. Erstellen Sie eine App mit dem Namen translate-app und aktivieren Sie das API-Produkt translate-product für diese App. Sie müssen das API-Produkt mit Ihrem Entwicklerkonto joe@example.com verknüpfen.

  5. Fügen Sie dem PreFlow des Proxy-Endpunkts eine VerifyAPIKey-Richtlinie mit dem Namen VA-VerifyKey hinzu. Der API-Schlüssel soll für jede Anfrage erforderlich sein und im Key-Header gesendet werden.

  6. Fügen Sie dem Proxy-Endpunkt-Preflow eine Kontingentrichtlinie mit dem Namen Q-EnforceQuota hinzu.

Die Richtlinie sollte die folgenden Schritte umfassen:

  • Verwenden Sie den Typ calendar. Für den Typ calendar ist ein StartTime-Element erforderlich.
  • Geben Sie UseQuotaConfigInAPIProduct an, um das Kontingent aus dem API-Produkt zu verwenden. Das Standardkontingent beträgt 5 Anfragen pro Stunde, wenn im API-Produkt keine Kontingenteinstellungen angegeben sind.
  • Setzen Sie Distributed und Synchronous auf „true“ und entfernen Sie das AsynchronousConfiguration-Element.

Nach diesen Änderungen sollte die Anfrage einen Fehler zurückgeben, wenn im Key-Header kein gültiger API-Schlüssel angegeben ist.

  1. Verwenden Sie auf der VM apigeex-test-vm die folgenden curl-Befehle, um die API-Schlüssel-Funktion zu testen:
  • Fehler (kein API-Schlüssel):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -d '{ "text": "Hello world!" }'
  • Fehler (ungültiger API-Schlüssel):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: ABC123" -d '{ "text": "Hello world!" }'
  • Erfolgreich (wenn die Variable KEY auf einen gültigen API-Schlüssel gesetzt ist KEY=<get this from the earlier step when setting up a Developer App>):

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'

Klicken Sie auf Fortschritt prüfen. API-Schlüsselüberprüfung und Kontingenterzwingung hinzufügen

Hinweis: Wenn kein grünes Häkchen angezeigt wird, klicken Sie rechts oben auf das Menü „Punktzahl“ und wählen Sie Fortschritt prüfen für den entsprechenden Schritt aus. In einem Pop-up-Fenster werden Tipps angezeigt.

Aufgabe 4: Meldungs-Logging hinzufügen

Damit Sie nachvollziehen können, wie der Übersetzungsdienst verwendet wird, wird mit einer MessageLogging-Richtlinie jede übersetzte Nachricht protokolliert.

Voraussetzungen:

  1. Fügen Sie dem bedingten Ablauf translate eine MessageLogging-Richtlinie mit dem Namen ML-LogTranslation hinzu. Die Richtlinie muss nach dem Schritt AM-BuildTranslateResponse ausgeführt werden.
Hinweis: Fügen Sie sie nicht dem PostClientFlow hinzu, da Logs nur für den Übersetzungsvorgang erstellt werden.
  1. Die Richtlinie sollte die Logeinträge in Cloud Logging ablegen. Verwenden Sie diese Richtliniendokumentation.
  • Der Wert LogName sollte so aussehen:

    projects/{organization.name}/logs/translate
  • Der Logeintrag sollte den contentType text/plain haben und der Inhalt der Meldung sollte so aussehen:

    {language}|{text}|{translated}

Für diese Nachricht sind die Variablen language, text und translated erforderlich, die in den Richtlinien AM-BuildTranslateRequest und AM-BuildTranslateResponse erstellt wurden.

  1. Prüfen Sie die Logeinträge in der Google Cloud Console auf der Seite Logging. Verwenden Sie die Abfrage logName : "translate", um nur die übersetzten Logs aufzurufen.

  2. Nachdem die MessageLogging-Richtlinie erfolgreich hinzugefügt wurde, verwenden Sie den folgenden curl-Befehl:

curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'
  • Mit diesem curl-Befehl sollte ein Logeintrag mit folgendem Inhalt erstellt werden:

    de|Hello world!|Hallo Welt!
Hinweis: Es kann einige Zeit dauern, bis ein Logeintrag in den Logs angezeigt wird.

Klicken Sie auf Fortschritt prüfen. Meldungs-Logging hinzufügen

Hinweis: Wenn kein grünes Häkchen angezeigt wird, klicken Sie rechts oben auf das Menü „Punktzahl“ und wählen Sie Fortschritt prüfen für den entsprechenden Schritt aus. In einem Pop-up-Fenster werden Tipps angezeigt.

Aufgabe 5: Backend-Fehlermeldung umformulieren

Wenn ein ungültiger Parameter target an die Translation API gesendet wird, wird die Fehlermeldung „400 Bad Request“ zurückgegeben:

{ "error": { "code": 400, "message": "Invalid Value", "errors": [ { "message": "Invalid Value", "domain": "global", "reason": "invalid" } ] } }

Diese Fehlermeldung wäre für den Aufrufer verwirrend. Formulieren Sie sie daher um.

Voraussetzungen:

  1. Fügen Sie dem default-Zielendpunkt einen FaultRules-Abschnitt hinzu. Wenn das Backend eine 400-Antwort zurückgibt, werden automatisch alle übereinstimmenden Fehlerregeln im Zielendpunkt ausgewertet.
Hinweis: Das Menü „UI Navigator“ auf der linken Seite kann nicht zum Hinzufügen eines FaultRules-Abschnitts verwendet werden. Sie müssen ihn der XML-Konfiguration des Zielendpunkts hinzufügen.
  1. Fügen Sie dem FaultRules-Abschnitt eine FaultRule hinzu. Die Condition dieser FaultRule sollte so festgelegt werden, dass sie ausgeführt wird, wenn fault.name gleich ErrorResponseCode ist.

  2. Erstellen Sie eine AssignMessage-Richtlinie mit dem Namen AM-BuildErrorResponse und hängen Sie sie an die FaultRule an. Verwenden Sie die folgende Richtlinienkonfiguration:

<AssignMessage name="AM-BuildErrorResponse"> <Set> <Payload contentType="application/json">{ "error": "Ungültige Anfrage. Prüfen Sie den Abfrageparameter lang." }</Payload> </Set> </AssignMessage>

Nachdem die Richtlinie angehängt wurde, sollte der FaultRules-Abschnitt im Zielendpunkt in etwa so aussehen:

<FaultRules> <FaultRule name="..."> <Step> <Name>...</Name> </Step> <Condition>...</Condition> </FaultRule> </FaultRules> Hinweis: Sie müssen die XML-Datei des Zielendpunkts manuell bearbeiten. (Achten Sie darauf, dass es sich um den TargetEndpoint und nicht um den ProxyEndpoint handelt.)
  1. Testen Sie die API.
  • Eine gültige Anfrage wie diese sollte weiterhin funktionieren:

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=de" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'
  • Bei einem ungültigen Sprachparameter wie diesem sollte die umformulierte Fehlermeldung zurückgegeben werden:

    curl -i -k -X POST "https://eval.example.com/translate/v1?lang=invalid" -H "Content-Type:application/json" -H "Key: $KEY" -d '{ "text": "Hello world!" }'

Klicken Sie auf Fortschritt prüfen. Backend-Fehlermeldung umformulieren

Hinweis: Wenn kein grünes Häkchen angezeigt wird, klicken Sie rechts oben auf das Menü „Punktzahl“ und wählen Sie Fortschritt prüfen für den entsprechenden Schritt aus. In einem Pop-up-Fenster werden Tipps angezeigt.

Glückwunsch!

In diesem Challenge-Lab haben Sie Ihre Kenntnisse zur Entwicklung und zum Schutz von APIs in Apigee X unter Beweis gestellt.

Logo: APIs mit Apigee X entwickeln und schützen

Nächstes Skill-Logo erwerben

Dieses Lab zum selbstbestimmten Lernen ist Teil der Aufgabenreihe APIs mit Apigee X entwickeln und schützen. Wenn Sie diese Aufgabenreihe abschließen, erhalten Sie das oben gezeigte Skill-Logo, das Sie in Ihren Lebenslauf oder Ihre Social-Media-Profile einfügen können. Teilen Sie Ihre Leistung mit #GoogleCloudBadge.

Diese Aufgabenreihe ist Teil des Google Cloud-Lernpfads für API-Entwickler. Setzen Sie Ihren Lernpfad fort und melden Sie sich für die Aufgabenreihe Apigee X bereitstellen und verwalten an.

Google Cloud-Schulungen und -Zertifizierungen

In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.

Anleitung zuletzt am 10. Juli 2024 aktualisiert

Lab zuletzt am 10. Juli 2024 getestet

© 2025 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

Vorbereitung

  1. Labs erstellen ein Google Cloud-Projekt und Ressourcen für einen bestimmten Zeitraum
  2. Labs haben ein Zeitlimit und keine Pausenfunktion. Wenn Sie das Lab beenden, müssen Sie von vorne beginnen.
  3. Klicken Sie links oben auf dem Bildschirm auf Lab starten, um zu beginnen

Privates Surfen verwenden

  1. Kopieren Sie den bereitgestellten Nutzernamen und das Passwort für das Lab
  2. Klicken Sie im privaten Modus auf Konsole öffnen

In der Konsole anmelden

  1. Melden Sie sich mit Ihren Lab-Anmeldedaten an. Wenn Sie andere Anmeldedaten verwenden, kann dies zu Fehlern führen oder es fallen Kosten an.
  2. Akzeptieren Sie die Nutzungsbedingungen und überspringen Sie die Seite zur Wiederherstellung der Ressourcen
  3. Klicken Sie erst auf Lab beenden, wenn Sie das Lab abgeschlossen haben oder es neu starten möchten. Andernfalls werden Ihre bisherige Arbeit und das Projekt gelöscht.

Diese Inhalte sind derzeit nicht verfügbar

Bei Verfügbarkeit des Labs benachrichtigen wir Sie per E-Mail

Sehr gut!

Bei Verfügbarkeit kontaktieren wir Sie per E-Mail

Es ist immer nur ein Lab möglich

Bestätigen Sie, dass Sie alle vorhandenen Labs beenden und dieses Lab starten möchten

Privates Surfen für das Lab verwenden

Nutzen Sie den privaten oder Inkognitomodus, um dieses Lab durchzuführen. So wird verhindert, dass es zu Konflikten zwischen Ihrem persönlichen Konto und dem Teilnehmerkonto kommt und zusätzliche Gebühren für Ihr persönliches Konto erhoben werden.