Skip to content

Commit fd496e1

Browse files
committed
Flesh out Endpoints quickstart into a tutorial app
1 parent bf91404 commit fd496e1

File tree

1 file changed

+39
-5
lines changed
  • appengine/standard/endpoints-frameworks-v2/echo

1 file changed

+39
-5
lines changed

appengine/standard/endpoints-frameworks-v2/echo/main.py

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,60 @@
2424

2525

2626
# [START messages]
27-
class Echo(messages.Message):
27+
class EchoRequest(messages.Message):
28+
content = messages.StringField(1)
29+
30+
class EchoResponse(messages.Message):
2831
"""A proto Message that contains a simple string field."""
2932
content = messages.StringField(1)
3033
# [END messages]
3134

3235

36+
ECHO_RESOURCE = endpoints.ResourceContainer(
37+
EchoRequest,
38+
n=messages.IntegerField(2, default=1))
39+
40+
3341
# [START echo_api]
3442
@endpoints.api(name='echo', version='v1')
3543
class EchoApi(remote.Service):
3644

3745
@endpoints.method(
38-
# This method takes an Echo message.
39-
Echo,
46+
# This method takes a ResourceContainer defined above.
47+
ECHO_RESOURCE,
4048
# This method returns an Echo message.
41-
Echo,
49+
EchoResponse,
4250
path='echo',
4351
http_method='POST',
4452
name='echo')
4553
def echo(self, request):
46-
return Echo(content=request.content)
54+
output_content = ' '.join([request.content] * request.n)
55+
return EchoResponse(content=output_content)
56+
57+
@endpoints.method(
58+
# This method takes a ResourceContainer defined above.
59+
ECHO_RESOURCE,
60+
# This method returns an Echo message.
61+
EchoResponse,
62+
path='echo/{n}',
63+
http_method='POST',
64+
name='echo_path_parameter')
65+
def echo_path_parameter(self, request):
66+
output_content = ' '.join([request.content] * request.n)
67+
return EchoResponse(content=output_content)
68+
69+
@endpoints.method(
70+
# This method takes a ResourceContainer defined above.
71+
ECHO_RESOURCE,
72+
# This method returns an Echo message.
73+
EchoResponse,
74+
path='echo',
75+
http_method='POST',
76+
name='echo_api_key',
77+
api_key_required=True)
78+
def echo_api_key(self, request):
79+
output_content = ' '.join([request.content] * request.n)
80+
return EchoResponse(content=output_content)
4781

4882
@endpoints.method(
4983
# This method takes an empty request body.

0 commit comments

Comments
 (0)