In dieser Anleitung wird erklärt, wie Sie eine .NET Core-Beispiel-API und den Extensible Service Proxy (ESP) konfigurieren und bereitstellen, der auf einer Instanz in der flexiblen App Engine-Umgebung ausgeführt wird. Die Beispiel-API wird in der OpenAPI-Spezifikation beschrieben. Sie erfahren in dieser Anleitung auch, wie Sie einen API-Schlüssel erstellen und in Anfragen an die API verwenden.
Eine Übersicht über Cloud Endpoints finden Sie in den Abschnitten Über Cloud Endpoints und Architekturübersicht zu Cloud Endpoints.
Ziele
Orientieren Sie sich beim Durcharbeiten der Anleitung an der folgenden Aufgabenliste. Alle Aufgaben sind erforderlich, um Anfragen sicher an die API senden zu können.
- Richten Sie ein Google Cloud Projekt ein, installieren Sie die erforderliche Software und erstellen Sie eine App Engine-Anwendung. Siehe Vorbereitung.
- Beispielcode herunterladen: Siehe Beispielcode abrufen.
- Konfigurieren Sie die Datei
openapi.yaml, mit der Endpoints konfiguriert wird. Siehe Endpoints konfigurieren. - Die Endpoints-Konfiguration bereitstellen, um einen Endpoints-Dienst zu erstellen. Siehe Endpoints-Konfiguration bereitstellen.
- Die Beispiel-API und den ESP in App Engine bereitstellen. Siehe API-Backend bereitstellen.
- Eine Anfrage an die API senden. Siehe Anfrage an die API senden.
- API-Aktivitäten verfolgen. Siehe API-Aktivitäten verfolgen.
- So vermeiden Sie Gebühren für Ihr Google Cloud -Konto. Siehe Bereinigen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
Hinweis
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Notieren Sie sich die Projekt-ID, da sie später benötigt wird.
-
Für diese Anleitung ist das .NET Core 2.x SDK erforderlich, das Sie mit einem beliebigen Texteditor verwenden können. Es ist nicht erforderlich, eine integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) zu verwenden. Dennoch empfehlen wir der Einfachheit halber, eine der folgenden IDEs zu nutzen:
- Visual Studio Code für macOS, Linux und Windows. Wenn Sie Visual Studio Code verwenden, müssen Sie auch .NET Core 2.x installieren.
- Visual Studio 2017 für Windows. In dieser Version ist .NET Core 2.x bereits enthalten.
- Visual Studio für Mac. In dieser Version ist .NET Core 2.x bereits enthalten.
Sie benötigen eine Anwendung, um Anfragen an die Beispiel-API zu senden. Diese Anleitung enthält ein Beispiel, bei dem
Invoke-WebRequestverwendet wird. Der Befehl wird in PowerShell ab Version 3.0 unterstützt.- Laden Sie die Google Cloud CLI herunter.
-
Aktualisieren Sie die gcloud CLI und installieren Sie die Endpoints-Komponenten.
gcloud components update
-
Die Google Cloud CLI (
gcloud) muss berechtigt sein, auf Ihre Daten und Dienste auf Google Cloudzuzugreifen: Ein neuer Browsertab wird geöffnet. Wählen Sie dort ein Konto aus.gcloud auth login
-
Legen Sie für das Standardprojekt Ihre Projekt-ID fest:
gcloud config set project YOUR_PROJECT_ID
Ersetzen Sie dabei YOUR_PROJECT_ID durch die ID Ihres Projekts in Google Cloud . Wenn Sie weitere Google Cloud -Projekte mit
gcloudverwalten möchten, lesen Sie gcloud CLI-Konfigurationen verwalten. - Wählen Sie die Region aus, in der Sie die App Engine-Anwendung erstellen möchten. Führen Sie den folgenden Befehl aus, um eine Liste der Regionen abzurufen:
gcloud app regions list
- Erstellen Sie eine App Engine-Anwendung.
Ersetzen Sie YOUR_PROJECT_ID durch Ihre Google Cloud-Projekt-ID und YOUR_REGION durch die Region, in der die App Engine-Anwendung erstellt werden soll.
gcloud app create \ --project=YOUR_PROJECT_ID \ --region=YOUR_REGION
Beispielcode abrufen
So laden Sie die Beispiel-API herunter:
Laden Sie den Beispielcode als ZIP-Datei herunter.
Extrahieren Sie die ZIP-Datei und wechseln Sie zum Verzeichnis
dotnet-docs-samples-master\endpoints\getting-started.Öffnen Sie
GettingStarted.slnmit Visual Studio oder verwenden Sie einen Editor Ihrer Wahl, um die Dateien im Verzeichnisendpoints\getting-started\src\IO.Swaggerzu bearbeiten.
Endpoints konfigurieren
Sie benötigen ein OpenAPI-Dokument auf Grundlage von OpenAPI 2.0 oder OpenAPI 3.x, das die Oberfläche Ihrer Apps sowie Authentifizierungsanforderungen beschreibt. Weitere Informationen finden Sie unter Unterstützte OpenAPI-Versionen.
Außerdem müssen Sie ein Google-spezifisches Feld hinzufügen, das die URL für jede App enthält, damit ESPv2 die zum Aufrufen einer App erforderlichen Informationen zur Verfügung stehen. Falls Sie mit OpenAPI noch nicht vertraut sind, stehen unter OpenAPI – Übersicht weitere Informationen bereit.
OpenAPI 2.0
Wenn Sie Endpoints mit einer OpenAPI 2.0-Spezifikation konfigurieren möchten, können Sie die Datei openapi-appengine.yaml verwenden, die im Verzeichnis dotnet-docs-samples-master\endpoints\getting-started des heruntergeladenen Beispielcodes verfügbar ist.
Der Inhalt der OpenAPI 2.0-Spezifikation sollte in etwa so aussehen:
swagger: "2.0" info: description: "A simple Google Cloud Endpoints API example." title: "Endpoints Example" version: "1.0.0" host: "YOUR_PROJECT_ID.appspot.com" consumes: - "application/json" produces: - "application/json" schemes: - "https" paths: "/echo": post: description: "Echo back a given message." operationId: "echo" produces: - "application/json" responses: 200: description: "Echo" schema: $ref: "#/definitions/echoMessage" parameters: - description: "Message to echo" in: body name: message required: true schema: $ref: "#/definitions/echoMessage" security: - api_key: [] "/auth/info/googlejwt": get: description: "Returns the requests' authentication information." operationId: "auth_info_google_jwt" produces: - "application/json" responses: 200: description: "Authentication info." schema: $ref: "#/definitions/authInfoResponse" x-security: - google_jwt: audiences: # This must match the "aud" field in the JWT. You can add multiple # audiences to accept JWTs from multiple clients. - "echo.endpoints.sample.google.com" "/auth/info/googleidtoken": get: description: "Returns the requests' authentication information." operationId: "authInfoGoogleIdToken" produces: - "application/json" responses: 200: description: "Authenication info." schema: $ref: "#/definitions/authInfoResponse" x-security: - google_id_token: audiences: # Your OAuth2 client's Client ID must be added here. You can add # multiple client IDs to accept tokens from multiple clients. - "YOUR-CLIENT-ID" definitions: echoMessage: type: "object" properties: message: type: "string" authInfoResponse: properties: id: type: "string" email: type: "string" securityDefinitions: # This section configures basic authentication with an API key. api_key: type: "apiKey" name: "key" in: "query" # This section configures authentication using Google API Service Accounts # to sign a json web token. This is mostly used for server-to-server # communication. google_jwt: authorizationUrl: "" flow: "implicit" type: "oauth2" # This must match the 'iss' field in the JWT. x-google-issuer: "jwt-client.endpoints.sample.google.com" # Update this with your service account's email address. x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/jwk/YOUR-SERVICE-ACCOUNT-EMAIL" # This section configures authentication using Google OAuth2 ID Tokens. # ID Tokens can be obtained using OAuth2 clients, and can be used to access # your API on behalf of a particular user. google_id_token: authorizationUrl: "" flow: "implicit" type: "oauth2" x-google-issuer: "https://accounts.google.com" x-google-jwks_uri: "https://www.googleapis.com/oauth2/v1/certs"
Ersetzen Sie in der Zeile mit dem Feld „host“ den Eintrag YOUR_PROJECT_ID durch Ihre Google Cloud Projekt-ID.
OpenAPI 3.x
Wenn Sie Endpoints mit einer OpenAPI 3.x-Spezifikation konfigurieren möchten, können Sie den Inhalt der Datei openapi-appengine.yaml im Verzeichnis dotnet-docs-samples-master\endpoints\getting-started des heruntergeladenen Beispielcodes ersetzen:
- Öffnen Sie die Datei
openapi-appengine.yamlin einem Texteditor und ersetzen Sie den Inhalt durch Folgendes:openapi: 3.0.4 info: description: "A simple Google Cloud Endpoints API example." title: "Endpoints Example" version: "1.0.0" servers: - url: "https://YOUR_PROJECT_ID.appspot.com" x-google-endpoint: {} paths: "/echo": post: description: "Echo back a given message." operationId: "echo" requestBody: description: "Message to echo" required: true content: