Professional Documents
Culture Documents
Apigee @apigee
groups.google.com/group/api-craft
youtube.com/apigee
New!
App User
App Store
App
App Developer
World of APIs
API
API Team
Internal Systems
Dogs API
/dogs /owners
Authorization
OAuth 2.0
App User
App Store
App
App Developer
World of APIs
API
API Team
Internal Systems
Android
HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("http://api.apizoo.com/v1/dogs"); HttpResponse response = client.execute(httpGet);
iOS
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.apizoo.com/v1/dogs"]]; NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
Ruby on Rails
require 'net/http' response = Net::HTTP.get(api.apizoo.com/v1, /dogs)
Android
JSONObject dogs = new JSONObject(response);
iOS
import "JSONKit.h" NSDictionary *dogs = [response objectFromData];
Ruby on Rails
require 'yajl' parser = Yajl::Parser.new dogs = parser.parse(response) # returns a hash
Route
requestEntity = new HttpEntity<Object>(requestHeaders); ResponseEntity<Dog> responseEntity = restTemplate.exchange("http://api.apizoo.com/v1/dogs/15", HttpMethod.GET, requestEntity, Dog.class);
Map
// Handled with introspection
Use
Dog dog = responseEntity.getBody()
iOS RestKit
Route
#import <RestKit/RestKit.h> RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:@"http://api.apizoo.com/v1"]; RKDynamicRouter* router = [[RKDynamicRouter new] autorelease]; manager.router = router; [router routeClass:[Dog class] toResourcePath:@"/dogs" forMethod:RKRequestMethodPOST]; [router routeClass:[Dog class] toResourcePath:@"/dogs/(dogID)"];
iOS RestKit
Map
@implementation Dog + (NSDictionary*)elementToPropertyMappings { return [NSDictionary dictionaryWithKeysAndObjects: @"name", @"color", nil]; } @end
iOS RestKit
Use
Dog* dog = [Dog object]; dog.name = @"Rover"; Dog.color = @"red"; [[RKObjectManager sharedManager] postObject:dog delegate:self]; [[RKObjectManager sharedManager] deleteObject:dog delegate:self];
Route
resource :dogs
Map
class Dog < ActiveResource::Base self.site = "http://api.apizoo.com/v1" end
Use
dog = Dog.new name: Rover, color: red dog.save dog.destroy
Usage
Roll your own
Usage
#import <RestKit/CoreData/CoreData.h> RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:@"http://api.apizoo.com/v1"]; manager.objectStore = [RKManagedObjectStore objectStoreWithStoreFilename:@"DogApp.sqlite"]; @implementation Dog + (NSString*)primaryKeyProperty { return @"dogID"; } @end
Usage
class DogResource < ActiveResource::Base self.site = http://api.apizoo.com/v1 end class Dog < ActiveRecord::Base # the before methods call DogResource methods before_create :create_resource before_update :update_resource before_destroy :destroy_resource end
Simple to do list
Android
usergrid_ sdk
iOS
Use RESTKit
Ruby on Rails
Probably not applicable
Android
Roll your own
iOS
-(BOOL)reachable { Reachability *r = [Reachability reachabilityWithHostName:@"api.apizoo.com/v1"]; NetworkStatus internetStatus = [r currentReachabilityStatus]; if(internetStatus == NotReachable) { return NO; } return YES; }
Ruby on Rails
Probably not applicable
Android
Roll your own
iOS RestKit
RKObjectManager* objectManager = [RKObjectManager sharedManager]; objectManager.client.baseURL = @api.apizoo.com/v1"; objectManager.client.OAuth2AccessToken = @"YOUR ACCESS TOKEN"; objectManager.client.authenticationType = RKRequestAuthenticationTypeOAuth2;
Android Built-in JSON, etc. Spring Mobile (bundles Jersey & Jackson) iOS JSONKit RestKit Core Data
Questions?
THANK YOU
Subscribe to API webinars at:
youtube.com/apigee
THANK YOU
Chat on IRC #api-craft
THANK YOU
Questions and ideas to:
groups.google.com/group/api-craft
THANK YOU
Contact us at:
@edanuff ed@apigee.com
@sramji sramji@apigee.com @landlessness brian@apigee.com