4. GDG Taipei
Google App Engine
Platform-as-a-Service at Google
Deploy your application code, take advantage of the infrastructure from Google
Easy to build, easy to run, easy to scale
Your Code
Scalable
Service
5. GDG Taipei
Build Server side logic on full power,
management free App Engine platform
Expose standards based REST interfaces with
built in Authorization
Use auto-generated, strongly typed, mobile
optimized client libraries for Android, iOS and
web
Publish and manage all your API in your
project internally without additional works
Cloud Endpoints
11. GDG Taipei
Endpoints Progress (Server-side)
Define your request and response messages
Make a API service
Implement your method, bound it with specified req/resp messages
Deploy your App Engine project
13. GDG Taipei
First, I'm going to define the format of input and output first
import endpoints
from protorpc import messages, remote
class StringMsg(messages.Message):
""" Your request message model """
msg = messages.StringField(1)
class StringListMsg(messages.Message):
""" Your response message model """
items = messages.StringField(1, repeated=True)
Google Protocol Buffer: https://developers.google.com/protocol-buffers/
14. GDG Taipei
then define an API, I decided to call it String API.
@endpoints.api(
name='stringapi',
version='v1',
description='Your first string
API')
class StringApi(remote.Service):
...
15. GDG Taipei
Almost done, just need a method to describe what this api does...
@endpoints.method(
StringMsg,
StringListMsg)
def split(self, request):
msg = request.msg # request will be a StringMsg instance here
splitted = msg.split() # SPLIT! one line of code
return StringListMsg(items=splitted)
# just return an instance of StringListMsg
17. GDG Taipei
Choose Your Client Libraries
For client library, you got choices:
● Generate your own
● Use Google APIs Client Library (this is the same way how you use other Google APIs)
18. GDG Taipei
Generate Your Own Library
Endpoints now support generating packaged library for these platform
● Android
● iOS
by Using Endpoints Command Line Tool: endpointscfg.py
For others, you will need to load clients via Google APIs Client Libraries
Generate Client Libraries: https://developers.google.com/appengine/docs/python/endpoints/gen_clients
19. GDG Taipei
Google APIs Client Library
Programming Languages Support:
● Java
● JavaScript
● Python
● .NET
● PHP
● Objective-C
Go, Node.js and Ruby supports are on the way, check out Google APIs Client Library
21. GDG Taipei
Model-based Endpoints
RESTful API are usually bound with models
github.com/GoogleCloudPlatform/endpoints-proto-datastore
Message-free endpoints development
@endpoints.method(MyModelMessage, MyModelMessage,
path='mymodel', http_method='POST',
name='mymodel.insert')
def InsertModel(self, request):
my_model = MyModel(attr1=request.attr1, attr2=request.attr2, ...)
transformed_model = DoSomething(my_model)
return MyModelMessage(attr1=transformed_model.attr1,
attr2=transformed_model.attr2, ...)
22. GDG Taipei
Endpoints Model
from endpoints_proto_datastore.ndb import EndpointsModel
class MyModel(EndpointsModel):
attr1 = ndb.StringProperty()
attr2 = ndb.StringProperty()
created = ndb.DateTimeProperty(auto_now_add=True)
23. GDG Taipei
Define POST Method for Model
@MyModel.method(path='mymodel', http_method='POST', name='mymodel.insert')
def MyModelInsert(self, my_model):
my_model.put()
return my_model
24. GDG Taipei
Define Query Method for Model
@MyModel.query_method(path='mymodels', name='mymodel.list')
def MyModelList(self, query):
# filter your query...
return query
29. GDG Taipei
GDG Taipei
Google Developer Group Taipei (previously GTUG)
Speakers wanted for regular meetup, DevFest
+GTUGTaipei
http://www.gdg-taipei.org/
30. GDG Taipei
Google I/O Extended Taipei
June 25 evening
8:00 PM ~ 2:00 AM
venue is TBA
● Watch Keynote Live together
● Sessions
○ Android, Google Glass
○ Google Cloud Platform
● Food, Drink...
Keep your eyes on GDG Taipei pages