Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 92 additions & 5 deletions appengine/endpoints-frameworks-v2/backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
This sample demonstrates how to use Google Cloud Endpoints Frameworks using
Java on App Engine Standard.

## Adding the project ID to the sample API code
## Build with Maven

### Adding the project ID to the sample API code

You must add the project ID obtained when you created your project to the
sample's `pom.xml` before you can deploy the code.
Expand All @@ -21,19 +23,19 @@ your project ID.

0. Save your changes.

## Building the sample project
### Building the sample project

To build the project:

mvn clean package

## Generating the openapi.json file
### Generating the openapi.json file

To generate the required configuration file `openapi.json`:

mvn exec:java -DGetSwaggerDoc

## Deploying the sample API to App Engine
### Deploying the sample API to App Engine

To deploy the sample API:

Expand All @@ -51,7 +53,92 @@ To deploy the sample API:

0. Wait for the upload to finish.

## Sending a request to the sample API
### Sending a request to the sample API

After you deploy the API and its configuration file, you can send requests
to the API.

To send a request to the API, from a command line, invoke the following `cURL`
command:

curl \
-H "Content-Type: application/json" \
-X POST \
-d '{"message":"echo"}' \
https://$PROJECT_ID.appspot.com/_ah/api/echo/v1/echo

You will get a 200 response with the following data:

{
"message": "echo"
}

## Build with gradle

### Adding the project ID to the sample API code

0. Edit the file `build.gradle`.

0. For `def projectId = 'YOUR_PROJECT_ID'`, replace the value `YOUR_PROJECT_ID` with
your project ID.

0. Edit the file `src/main/java/com/example/echo/Echo.java

0. Replace the value `YOUR-PROJECT-ID` with your project ID.

0. Save your changes.

### Building the sample project

To build the project on unix-based systems:

./gradlew build

Note for windows user: Use `gradlew.bat` instead of `./gradlew`

<details>
<summary>more details</summary>
The project contains the standard java and war plugins and in addition to that it contains the following plugins:
[endpoints-framework-gradle-plugin](https://github.com/GoogleCloudPlatform/endpoints-framework-gradle-plugin "endpoints-framework-gradle-plugin") for the endpoint related tasks and
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't parsed correctly. I see markdown being displayed instead of the link.

[appengine-gradle-plugin](https://github.com/GoogleCloudPlatform/app-gradle-plugin "appengine-gradle-plugin") for the appengine standard related tasks.
</details>

### Generating the openapi.json file

To generate the required configuration file `openapi.json`:

./gradlew endpointsOpenApiDocs

This results in a file in build/endpointsOpenApiDocs/openapi.json

### Deploying the sample API to App Engine

To deploy the sample API:

0. Invoke the `gcloud` command to deploy the API configuration file:

gcloud service-management deploy build/endpointsOpenApiDocs/openapi.json

0. Deploy the API implementation code by invoking:

./gradlew appengineDeploy

The first time you upload a sample app, you may be prompted to authorize the
deployment. Follow the prompts: when you are presented with a browser window
containing a code, copy it to the terminal window.

<details>
<summary>ERROR: (gcloud.app.deploy) The current Google Cloud project [...] does not contain an App Engine application.</summary>
If you create a fresh cloud project that doesn't contain a appengine application you may receive this Error:

ERROR: (gcloud.app.deploy) The current Google Cloud project [...] does not contain an App Engine application. Use `gcloud app create` to initialize an App Engine application within the project.

In that case just execute `gcloud app create`, you will be asked to select a region and the app will be created. Then run gradle appengineDeploy again.
</details>

0. Wait for the upload to finish.

### Sending a request to the sample API

After you deploy the API and its configuration file, you can send requests
to the API.
Expand Down
55 changes: 55 additions & 0 deletions appengine/endpoints-frameworks-v2/backend/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import org.apache.tools.ant.filters.ReplaceTokens
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add copyright, you can copy the one used in the migration sample.


buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.0'
Copy link
Copy Markdown
Contributor

@frankyn frankyn May 30, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use + as version. Applies to each.

classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.3.2'
}
}

repositories {
maven {
url 'https://maven-central.storage.googleapis.com'
}
jcenter()
mavenCentral()
}

task wrapper(type: Wrapper) {
gradleVersion = '3.5'
}

def projectId = 'YOUR_PROJECT_ID'

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
apply plugin: 'com.google.cloud.tools.appengine'

dependencies {
compile 'com.google.endpoints:endpoints-framework:2.0.7'
Copy link
Copy Markdown
Contributor

@frankyn frankyn May 30, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use + as version. Applies to each.

compile 'com.google.endpoints:endpoints-management-control-appengine:1.0.3'
compile 'com.google.endpoints:endpoints-framework-auth:1.0.3'
}

endpointsServer {
// Endpoints Framework Plugin server-side configuration
hostname = "echo-api.endpoints.${projectId}.cloud.goog"
}

sourceCompatibility = 1.7 // App Engine Standard uses Java 7
targetCompatibility = 1.7 // App Engine Standard uses Java 7

// this replaces the ${endpoints.project.id} in appengine-web.xml and web.xml
task replaceProjectId(type: Copy) {
from 'src/main/webapp/WEB-INF/'
include '*.xml'
into 'build/exploded-backend/WEB-INF'
expand(endpoints:[project:[id:projectId]])
filteringCharset = 'UTF-8'
}
assemble.dependsOn replaceProjectId
Binary file not shown.
160 changes: 160 additions & 0 deletions appengine/endpoints-frameworks-v2/backend/gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading