Introduction to Google Cloud Endpoints: Speed Up Your API Development


Published on

Briefing of intro Google Cloud Endpoints, the technology that can speed up the api development on Google App Engine.

Published in: Technology, Business

Introduction to Google Cloud Endpoints: Speed Up Your API Development

  1. 1. GDG Taipei GDG Taipei Google Cloud Endpoints Speed Up Your API Development +Colin Su Google Developer Expert - Cloud Platform
  2. 2. GDG Taipei About +Colin Developer Expert, Google Cloud Platform Organizer of GDG Taipei Software Engineer at Tagtoo
  3. 3. GDG Taipei Agenda What's Google Cloud Endpoints? Instance of Google Cloud Endpoints What Else? 1 2 3
  4. 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. 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
  6. 6. GDG Taipei How It Works
  7. 7. GDG Taipei Server-Side (API Service) Support Python Java Go PHP
  8. 8. GDG Taipei API Explorer APIs Discovery Service
  9. 9. GDG Taipei API Explorer Testing API made easy
  10. 10. GDG Taipei Agenda What's Google Cloud Endpoints? Instance of Google Cloud Endpoints What Else? 1 2 3
  11. 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
  12. 12. GDG Taipei Let's step through the example of server-side Endpoints
  13. 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:
  14. 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. 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
  16. 16. GDG Taipei Yeah, IT WORKS. (not only on my machine)
  17. 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. 18. GDG Taipei Generate Your Own Library Endpoints now support generating packaged library for these platform ● Android ● iOS by Using Endpoints Command Line Tool: For others, you will need to load clients via Google APIs Client Libraries Generate Client Libraries:
  19. 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
  20. 20. GDG Taipei Agenda What's Google Cloud Endpoints? Instance of Google Cloud Endpoints What Else? 1 2 3
  21. 21. GDG Taipei Model-based Endpoints RESTful API are usually bound with models 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. 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. 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. 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
  25. 25. GDG Taipei
  26. 26. GDG Taipei Resources , then search "endpoint"
  27. 27. GDG Taipei Highlighted Projects on Github Getting Started: ● Hello Endpoints {Python, Java}: for server-side development ● Hello Endpoints {iOS, Android}: for client libraries usage Getting Advanced: ● appengine-endpoints-angular-todos-python ● appengine-endpoints-tictactoe-python ● appengine-endpoints-tictactoe-java-maven
  28. 28. Recent Updates Information About Upcoming Events
  29. 29. GDG Taipei GDG Taipei Google Developer Group Taipei (previously GTUG) Speakers wanted for regular meetup, DevFest +GTUGTaipei
  30. 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
  31. 31. Interested? Go to for more information +ColinSu @littleq0903
  32. 32. Google confidential │ Do not distribute Images by Connie Zhou