introduction to google cloud endpoints: speed up your api development

Post on 08-May-2015

1.225 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

GDG Taipei

GDG Taipei

Google Cloud EndpointsSpeed Up Your API Development

+Colin Su

Google Developer Expert - Cloud Platform

GDG Taipei

About +ColinDeveloper Expert, Google Cloud Platform

Organizer of GDG Taipei

Software Engineer at Tagtoo

http://about.me/littleQ

GDG Taipei

Agenda

What's Google Cloud Endpoints?

Instance of Google Cloud Endpoints

What Else?

1

2

3

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 CodeScalable

Service

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

GDG Taipei

How It Works

GDG Taipei

Server-Side (API Service) Support

Python

Java

Go

PHP

GDG Taipei

API Explorer

developers.google.com/apis-explorer

APIs Discovery Service

GDG Taipei

API Explorer

Testing API made easy

GDG Taipei

Agenda

What's Google Cloud Endpoints?

Instance of Google Cloud Endpoints

What Else?

1

2

3

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

GDG Taipei

Let's step through the example of server-side Endpoints

GDG Taipei

First, I'm going to define the format of input and output first

import endpointsfrom 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/

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): ...

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

GDG Taipei

Yeah, IT WORKS. (not only on my machine)

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)

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

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

GDG Taipei

Agenda

What's Google Cloud Endpoints?

Instance of Google Cloud Endpoints

What Else?

1

2

3

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, ...)

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)

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

GDG Taipei

Define Query Method for Model

@MyModel.query_method(path='mymodels', name='mymodel.list')def MyModelList(self, query): # filter your query... return query

GDG Taipei

GDG Taipei

Resources

http://googlecloudplatform.github.io/ , then search "endpoint"

http://github.com/googlecloudplatform?query=endpoint

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

Recent UpdatesInformation About Upcoming Events

GDG Taipei

GDG TaipeiGoogle Developer Group Taipei (previously GTUG)

Speakers wanted for regular meetup, DevFest

+GTUGTaipei

http://www.gdg-taipei.org/

GDG Taipei

Google I/O Extended TaipeiJune 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

Interested?Go to http://cloud.google.com for more information

+ColinSu@littleq0903http://about.me/littleQ

Google confidential │ Do not distribute

cloud.google.com

Images by Connie Zhou

top related