SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Introduction to the Pods 
JSON API 
Josh Pollock, @josh412 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
What Is The WordPress REST API? 
A really easy way to move data between sites or inside of a 
site using the standardized JSON format. 
Currently a plugin, Hopefully WordPress 4.1 
http://wp-api.org 
https://speakerdeck.com/rmccue/wcmke2014 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Helpful Functions 
json_url() 
● REST API Root URL 
● REST API 
add_query_arg() 
● Add arguments to URLs 
● WordPress 
json_encode() 
● Convert PHP to JSON 
● PHP 
json_decode() 
● Convert JSON to PHP 
● PHP 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
The Pods JSON API 
Extends the WordPress REST API 
Routes for: 
● Pods 
● Pods API 
● Pods Components 
https://github.com/pods-framework/pods-json-api 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Authentication Options 
● Basic Authentication 
● Nonce/Cookie 
● Key pairs 
● oAuth1 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Access Filters In Pods JSON API 
Endpoints in Pods 
apply_filters( 'pods_json_api_access_pods_' . $method, $access, $method, $pod, $item ); 
apply_filters( 'pods_json_api_access_pods', $access, $method, $pod, $item ); 
Endpoints in Pods API 
apply_filters( 'pods_json_api_access_api_' . $method, $access, $method ); 
apply_filters( 'pods_json_api_access_api', $access, $method ); 
Endpoints in Components 
apply_filters( 'pods_json_api_access_components_' . $method, $access, $method ); 
apply_filters( 'pods_json_api_access_components', $access, $method ); 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
GET vs POST 
RESTful APIs use the basic HTTP methods: 
GET POST PUT DELETE 
We will be using GET to get items and POST to create items. 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Capabilities of The Pods JSON API 
○ Show Pods and content 
○ Save Pods 
○ Create Pods and Fields 
○ Import a Pods Package 
○ Activate/ deactivate components 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
The WordPress HTTP API 
A simple PHP API in WordPress for making HTTP requests. 
Helpful functions such as: 
wp_remote_get() 
http://codex.wordpress.org/Function_Reference/wp_remote_get 
wp_remote_retrieve_body() 
http://codex.wordpress.org/Function_API/wp_remote_retrieve_body 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Getting Pods Items 
Make a GET request to 
<json-url>/pods/<pod> 
or 
<json-url>/pods/<pod>/<id> 
$headers = array ( 
'Authorization' => 'Basic ' . base64_encode( 'username' 
. ':' . 'password' ), 
); 
$url = json_url( 'pods/jedi' ); 
$response = wp_remote_post( $url, array ( 
'method' => 'GET', 
'headers' => $headers, 
) 
); 
//make sure response isn't an error 
if ( ! is_wp_error( $response ) ) { 
//show the updated post item 
var_dump( wp_remote_retrieve_body( $response ) ); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Using Pods Find 
Add the parameters to the URL, 
using add_query_arg() 
$headers = array ( 
'Authorization' => 'Basic ' . base64_encode( 'username' . ':' 
. 'password' ), 
); 
$url = json_url( 'pods/jedi' ); 
$params = array( 
'home_world.post_title' => 'Tatooine' 
); 
$url = add_query_arg( $params, $url ); 
$response = wp_remote_post( $url, array ( 
'method' => 'GET', 
'headers' => $headers, 
) 
); 
//make sure response isn't an error 
if ( ! is_wp_error( $response ) ) { 
//show the updated post item 
var_dump( wp_remote_retrieve_body( $response ) ); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Saving Pods Items 
Make POST request to 
New item: 
<json-url>/<pod> 
Update item: 
<json-url>/<pod>/<id> 
$data = array( 'home_planet' => 'Alderann' ); 
$url = json_url( 'pods/jedi/9' ); 
$headers = array ( 
'Authorization' => 'Basic ' . base64_encode( 'username' . ':' . 
'password' ), 
); 
$response = wp_remote_post( $url, array ( 
'method' => 'POST', 
'headers' => $headers, 
'body' => json_encode( $data ) 
) 
); 
//make sure response isn't an error 
if ( ! is_wp_error( $response ) ) { 
//show the updated post item 
var_dump( wp_remote_retrieve_body( $response ) ); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Creating Pods 
POST to <json-url>/<pods-api> 
Body of request passed to 
PodsAPI->save_pod() 
$data = array( 
'name' => 'jedi', 
'type' => 'post_type', 
); 
$url = json_url( 'pods-api' ); 
$headers = array ( 
'Authorization' => 'Basic ' . base64_encode( 'username' . ':' . 
'password' ), 
); 
$response = wp_remote_post( $url, array ( 
'method' => 'POST', 
'headers' => $headers, 
'body' => json_encode( $data ) 
) 
); 
//make sure response isn't an error 
if ( ! is_wp_error( $response ) ) { 
//show the updated post item 
var_dump( wp_remote_retrieve_body( $response ) ); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Update Pods 
Same as before but use: 
<json-url>/<pods-api>/<pod-name> 
or 
<json-url>/<pods-api>/<pod-id> 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
AJAX Time! 
GET or POST data asynchronously, and render it in the 
browser. 
Make your site more dynamic and “app” like. 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Using The REST API Client-JS 
Provides Backbone collections and models for all REST API 
endpoints. 
No Pods integration, but… 
Gives us an easy way to handle authentication 
https://github.com/WP-API/client-js 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Preparing To Use Client JS 
Enqueue The Script 
Localize a nonce and the root 
JSON url. 
add_action( 'wp_enqueue_scripts', 'json_api_client_js' 
); 
add_action( 'wp_enqueue_scripts', 
'json_api_talk_scripts' ); 
function json_api_talk_scripts() { 
if ( ! function_exists( 'json_get_url_prefix' ) ) { 
return; 
} 
wp_enqueue_script( 'json-api-talk', plugins_url( 
'/json-api-talk.js', __FILE__ ), array( 'jquery' ), 
'1.0', true ); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Setup Variables From Localize Data 
(function($){ 
//root JSON URL 
var root_URL = WP_API_Settings.root; 
//API nonce 
var api_NONCE = WP_API_Settings.nonce; 
//Pods endpoint URL 
var pods_URL = WP_API_Settings + 'pods'; 
})(jQuery); 
Prepare URLs and nonce 
from localized data for 
use in functions. 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Get Items Via AJAX 
function getItem( id, pod ) { 
var URL = pods_URL + '/' + pod + '/' + 'id'; 
$.ajax({ 
type:"GET", 
url: url, 
dataType : 'json', 
beforeSend : function( xhr ) { 
xhr.setRequestHeader( 'X-WP-Nonce', api_Nonce ); 
}, 
success: function(response) { 
//do something 
} 
}); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Save Items Via AJAX 
function saveItem( id, pod ) { 
var save_url = podsURL + '/' + pod + '/' + 'id'; 
var title = ''; 
var home_planet = ''; 
var lightsaber_color = ''; 
var JSONObj = { 
"title" : title, 
"home_planet" : home_planet, 
'lightsaber_color' : lightsaber_color, 
"status" : 'publish' 
}; 
//encode data as JSON 
var data = JSON.stringify( JSONObj ); 
$.ajax({ 
type:"POST", 
url: save_url, 
dataType : 'json', 
data: data, 
beforeSend : function( xhr ) { 
xhr.setRequestHeader( 'X-WP-Nonce', apiNonce ); 
}, 
success: function(response) { 
alert( 'WOO!'); 
} 
}); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Render With A Handlebars Template 
function getItem( id, pod, templateID, containerID ) { 
var get_url = podsURL + '/' + pod + '/' + 'id'; 
$.ajax({ 
type:"GET", 
url: get_url, 
dataType : 'json', 
beforeSend : function( xhr ) { 
xhr.setRequestHeader( 'X-WP-Nonce', apiNonce ); 
}, 
success: function(response) { 
var source = $( templateID ).html(); 
var template = Handlebars.compile( source ); 
var html = template( data ); 
$( container ).append( html ); 
} 
}); 
} 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Non WordPress Front-ends 
Angular Client For Pods API 
https://github.com/bjoernklose/angular-wordpress-pods 
Using the WordPress REST API in a mobile app 
http://apppresser.com/using-wordpress-rest-api-mobile-app/ 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
Questions? 
Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014

Mais conteúdo relacionado

Mais procurados

[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기Moonbeom KWON
 
Owl: The New Odoo UI Framework
Owl: The New Odoo UI FrameworkOwl: The New Odoo UI Framework
Owl: The New Odoo UI FrameworkOdoo
 
Concepts of OOPs
Concepts of OOPsConcepts of OOPs
Concepts of OOPsEssay Corp
 
Unsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST APIUnsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST APIMikhail Egorov
 
FIDO Authentication Technical Overview
FIDO Authentication Technical OverviewFIDO Authentication Technical Overview
FIDO Authentication Technical OverviewFIDO Alliance
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework Serhat Can
 
Node.js Event Emitter
Node.js Event EmitterNode.js Event Emitter
Node.js Event EmitterEyal Vardi
 
Abstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaAbstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaMOHIT AGARWAL
 
FIDO Certification Update (Korean Language)
FIDO Certification Update (Korean Language)FIDO Certification Update (Korean Language)
FIDO Certification Update (Korean Language)FIDO Alliance
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Eyal Vardi
 
odoo json rpc.docx
odoo json rpc.docxodoo json rpc.docx
odoo json rpc.docxloufgxrtvct
 
Spring core module
Spring core moduleSpring core module
Spring core moduleRaj Tomar
 

Mais procurados (20)

PHP file handling
PHP file handling PHP file handling
PHP file handling
 
P5 stockage
P5 stockageP5 stockage
P5 stockage
 
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
[LetSwift 2023] 객체지향-함수형 아키텍처 직접 만들기
 
Owl: The New Odoo UI Framework
Owl: The New Odoo UI FrameworkOwl: The New Odoo UI Framework
Owl: The New Odoo UI Framework
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Flyweight pattern
Flyweight patternFlyweight pattern
Flyweight pattern
 
Concepts of OOPs
Concepts of OOPsConcepts of OOPs
Concepts of OOPs
 
Unsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST APIUnsafe JAX-RS: Breaking REST API
Unsafe JAX-RS: Breaking REST API
 
FIDO Authentication Technical Overview
FIDO Authentication Technical OverviewFIDO Authentication Technical Overview
FIDO Authentication Technical Overview
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Node.js Event Emitter
Node.js Event EmitterNode.js Event Emitter
Node.js Event Emitter
 
C# Xml serialization
C# Xml serializationC# Xml serialization
C# Xml serialization
 
Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
 
Abstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core JavaAbstract Class & Abstract Method in Core Java
Abstract Class & Abstract Method in Core Java
 
Asp.net control
Asp.net controlAsp.net control
Asp.net control
 
FIDO Certification Update (Korean Language)
FIDO Certification Update (Korean Language)FIDO Certification Update (Korean Language)
FIDO Certification Update (Korean Language)
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0
 
odoo json rpc.docx
odoo json rpc.docxodoo json rpc.docx
odoo json rpc.docx
 
Spring core module
Spring core moduleSpring core module
Spring core module
 

Destaque

No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & MigrationNo More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migrationpodsframework
 
Building a Rails API with the JSON API Spec
Building a Rails API with the JSON API SpecBuilding a Rails API with the JSON API Spec
Building a Rails API with the JSON API SpecSonja Peterson
 
Five events in the life of every WordPress request you should know
Five events in the life of every WordPress request you should knowFive events in the life of every WordPress request you should know
Five events in the life of every WordPress request you should knowCaldera Labs
 
Ember Data and JSON API
Ember Data and JSON APIEmber Data and JSON API
Ember Data and JSON APIyoranbe
 
Caldera Learn - LoopConf WP API + Angular FTW Workshop
Caldera Learn - LoopConf WP API + Angular FTW WorkshopCaldera Learn - LoopConf WP API + Angular FTW Workshop
Caldera Learn - LoopConf WP API + Angular FTW WorkshopCalderaLearn
 
Connecting Content Silos: One CMS, Many Sites With The WordPress REST API
 Connecting Content Silos: One CMS, Many Sites With The WordPress REST API Connecting Content Silos: One CMS, Many Sites With The WordPress REST API
Connecting Content Silos: One CMS, Many Sites With The WordPress REST APICaldera Labs
 
Build A Killer Client For Your REST+JSON API
Build A Killer Client For Your REST+JSON APIBuild A Killer Client For Your REST+JSON API
Build A Killer Client For Your REST+JSON APIStormpath
 

Destaque (7)

No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & MigrationNo More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
No More “Cowboy Coding”: A Best Practices Guide to Local Development & Migration
 
Building a Rails API with the JSON API Spec
Building a Rails API with the JSON API SpecBuilding a Rails API with the JSON API Spec
Building a Rails API with the JSON API Spec
 
Five events in the life of every WordPress request you should know
Five events in the life of every WordPress request you should knowFive events in the life of every WordPress request you should know
Five events in the life of every WordPress request you should know
 
Ember Data and JSON API
Ember Data and JSON APIEmber Data and JSON API
Ember Data and JSON API
 
Caldera Learn - LoopConf WP API + Angular FTW Workshop
Caldera Learn - LoopConf WP API + Angular FTW WorkshopCaldera Learn - LoopConf WP API + Angular FTW Workshop
Caldera Learn - LoopConf WP API + Angular FTW Workshop
 
Connecting Content Silos: One CMS, Many Sites With The WordPress REST API
 Connecting Content Silos: One CMS, Many Sites With The WordPress REST API Connecting Content Silos: One CMS, Many Sites With The WordPress REST API
Connecting Content Silos: One CMS, Many Sites With The WordPress REST API
 
Build A Killer Client For Your REST+JSON API
Build A Killer Client For Your REST+JSON APIBuild A Killer Client For Your REST+JSON API
Build A Killer Client For Your REST+JSON API
 

Semelhante a Introduction to the Pods JSON API

Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram VaswaniCreating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswanivvaswani
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumJeroen van Dijk
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST APICaldera Labs
 
Building WordPress Client Side Applications with WP and WP-API - #wcmia
Building WordPress Client Side Applications with WP and WP-API - #wcmiaBuilding WordPress Client Side Applications with WP and WP-API - #wcmia
Building WordPress Client Side Applications with WP and WP-API - #wcmiaRoy Sivan
 
Build Modern Web Applications with React and WordPress
Build Modern Web Applications with React and WordPressBuild Modern Web Applications with React and WordPress
Build Modern Web Applications with React and WordPressImran Sayed
 
How to build Client Side Applications with WordPress and WP-API | #wcmia
How to build Client Side Applications with WordPress and WP-API | #wcmiaHow to build Client Side Applications with WordPress and WP-API | #wcmia
How to build Client Side Applications with WordPress and WP-API | #wcmiaRoy Sivan
 
React with WordPress : Headless CMS
React with WordPress : Headless CMSReact with WordPress : Headless CMS
React with WordPress : Headless CMSImran Sayed
 
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!Evan Mullins
 
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
 
Flask and Angular: An approach to build robust platforms
Flask and Angular:  An approach to build robust platformsFlask and Angular:  An approach to build robust platforms
Flask and Angular: An approach to build robust platformsAyush Sharma
 
Building native mobile apps with word press
Building native mobile apps with word pressBuilding native mobile apps with word press
Building native mobile apps with word pressNikhil Vishnu P.V
 
WIRED and the WP REST API
WIRED and the WP REST APIWIRED and the WP REST API
WIRED and the WP REST APIkvignos
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Matthew Groves
 
Full Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLFull Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLAll Things Open
 
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
API  Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015 API  Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015 Hamdi Hmidi
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013Kiril Iliev
 
Introduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST APIIntroduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST APICaldera Labs
 
RESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroRESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroChristopher Pecoraro
 
Extending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh PollockExtending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh PollockCaldera Labs
 

Semelhante a Introduction to the Pods JSON API (20)

Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram VaswaniCreating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in Titanium
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST API
 
Building WordPress Client Side Applications with WP and WP-API - #wcmia
Building WordPress Client Side Applications with WP and WP-API - #wcmiaBuilding WordPress Client Side Applications with WP and WP-API - #wcmia
Building WordPress Client Side Applications with WP and WP-API - #wcmia
 
Build Modern Web Applications with React and WordPress
Build Modern Web Applications with React and WordPressBuild Modern Web Applications with React and WordPress
Build Modern Web Applications with React and WordPress
 
How to build Client Side Applications with WordPress and WP-API | #wcmia
How to build Client Side Applications with WordPress and WP-API | #wcmiaHow to build Client Side Applications with WordPress and WP-API | #wcmia
How to build Client Side Applications with WordPress and WP-API | #wcmia
 
React with WordPress : Headless CMS
React with WordPress : Headless CMSReact with WordPress : Headless CMS
React with WordPress : Headless CMS
 
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
WordCamp Raleigh 2016 - WP API, What is it good for? Absolutely Everything!
 
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
 
Flask and Angular: An approach to build robust platforms
Flask and Angular:  An approach to build robust platformsFlask and Angular:  An approach to build robust platforms
Flask and Angular: An approach to build robust platforms
 
Building native mobile apps with word press
Building native mobile apps with word pressBuilding native mobile apps with word press
Building native mobile apps with word press
 
WIRED and the WP REST API
WIRED and the WP REST APIWIRED and the WP REST API
WIRED and the WP REST API
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
 
Full Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLFull Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQL
 
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
API  Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015 API  Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
API Driven Application - AngulatJS, NodeJS and MongoDB | JCertif Tunisia 2015
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
 
Introduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST APIIntroduction to VueJS & The WordPress REST API
Introduction to VueJS & The WordPress REST API
 
RESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroRESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher Pecoraro
 
Extending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh PollockExtending the WordPress REST API - Josh Pollock
Extending the WordPress REST API - Josh Pollock
 
REST API for your WP7 App
REST API for your WP7 AppREST API for your WP7 App
REST API for your WP7 App
 

Último

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 

Introduction to the Pods JSON API

  • 1. Introduction to the Pods JSON API Josh Pollock, @josh412 Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 2. What Is The WordPress REST API? A really easy way to move data between sites or inside of a site using the standardized JSON format. Currently a plugin, Hopefully WordPress 4.1 http://wp-api.org https://speakerdeck.com/rmccue/wcmke2014 Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 3. Helpful Functions json_url() ● REST API Root URL ● REST API add_query_arg() ● Add arguments to URLs ● WordPress json_encode() ● Convert PHP to JSON ● PHP json_decode() ● Convert JSON to PHP ● PHP Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 4. The Pods JSON API Extends the WordPress REST API Routes for: ● Pods ● Pods API ● Pods Components https://github.com/pods-framework/pods-json-api Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 5. Authentication Options ● Basic Authentication ● Nonce/Cookie ● Key pairs ● oAuth1 Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 6. Access Filters In Pods JSON API Endpoints in Pods apply_filters( 'pods_json_api_access_pods_' . $method, $access, $method, $pod, $item ); apply_filters( 'pods_json_api_access_pods', $access, $method, $pod, $item ); Endpoints in Pods API apply_filters( 'pods_json_api_access_api_' . $method, $access, $method ); apply_filters( 'pods_json_api_access_api', $access, $method ); Endpoints in Components apply_filters( 'pods_json_api_access_components_' . $method, $access, $method ); apply_filters( 'pods_json_api_access_components', $access, $method ); Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 7. GET vs POST RESTful APIs use the basic HTTP methods: GET POST PUT DELETE We will be using GET to get items and POST to create items. Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 8. Capabilities of The Pods JSON API ○ Show Pods and content ○ Save Pods ○ Create Pods and Fields ○ Import a Pods Package ○ Activate/ deactivate components Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 9. The WordPress HTTP API A simple PHP API in WordPress for making HTTP requests. Helpful functions such as: wp_remote_get() http://codex.wordpress.org/Function_Reference/wp_remote_get wp_remote_retrieve_body() http://codex.wordpress.org/Function_API/wp_remote_retrieve_body Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 10. Getting Pods Items Make a GET request to <json-url>/pods/<pod> or <json-url>/pods/<pod>/<id> $headers = array ( 'Authorization' => 'Basic ' . base64_encode( 'username' . ':' . 'password' ), ); $url = json_url( 'pods/jedi' ); $response = wp_remote_post( $url, array ( 'method' => 'GET', 'headers' => $headers, ) ); //make sure response isn't an error if ( ! is_wp_error( $response ) ) { //show the updated post item var_dump( wp_remote_retrieve_body( $response ) ); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 11. Using Pods Find Add the parameters to the URL, using add_query_arg() $headers = array ( 'Authorization' => 'Basic ' . base64_encode( 'username' . ':' . 'password' ), ); $url = json_url( 'pods/jedi' ); $params = array( 'home_world.post_title' => 'Tatooine' ); $url = add_query_arg( $params, $url ); $response = wp_remote_post( $url, array ( 'method' => 'GET', 'headers' => $headers, ) ); //make sure response isn't an error if ( ! is_wp_error( $response ) ) { //show the updated post item var_dump( wp_remote_retrieve_body( $response ) ); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 12. Saving Pods Items Make POST request to New item: <json-url>/<pod> Update item: <json-url>/<pod>/<id> $data = array( 'home_planet' => 'Alderann' ); $url = json_url( 'pods/jedi/9' ); $headers = array ( 'Authorization' => 'Basic ' . base64_encode( 'username' . ':' . 'password' ), ); $response = wp_remote_post( $url, array ( 'method' => 'POST', 'headers' => $headers, 'body' => json_encode( $data ) ) ); //make sure response isn't an error if ( ! is_wp_error( $response ) ) { //show the updated post item var_dump( wp_remote_retrieve_body( $response ) ); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 13. Creating Pods POST to <json-url>/<pods-api> Body of request passed to PodsAPI->save_pod() $data = array( 'name' => 'jedi', 'type' => 'post_type', ); $url = json_url( 'pods-api' ); $headers = array ( 'Authorization' => 'Basic ' . base64_encode( 'username' . ':' . 'password' ), ); $response = wp_remote_post( $url, array ( 'method' => 'POST', 'headers' => $headers, 'body' => json_encode( $data ) ) ); //make sure response isn't an error if ( ! is_wp_error( $response ) ) { //show the updated post item var_dump( wp_remote_retrieve_body( $response ) ); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 14. Update Pods Same as before but use: <json-url>/<pods-api>/<pod-name> or <json-url>/<pods-api>/<pod-id> Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 15. AJAX Time! GET or POST data asynchronously, and render it in the browser. Make your site more dynamic and “app” like. Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 16. Using The REST API Client-JS Provides Backbone collections and models for all REST API endpoints. No Pods integration, but… Gives us an easy way to handle authentication https://github.com/WP-API/client-js Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 17. Preparing To Use Client JS Enqueue The Script Localize a nonce and the root JSON url. add_action( 'wp_enqueue_scripts', 'json_api_client_js' ); add_action( 'wp_enqueue_scripts', 'json_api_talk_scripts' ); function json_api_talk_scripts() { if ( ! function_exists( 'json_get_url_prefix' ) ) { return; } wp_enqueue_script( 'json-api-talk', plugins_url( '/json-api-talk.js', __FILE__ ), array( 'jquery' ), '1.0', true ); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 18. Setup Variables From Localize Data (function($){ //root JSON URL var root_URL = WP_API_Settings.root; //API nonce var api_NONCE = WP_API_Settings.nonce; //Pods endpoint URL var pods_URL = WP_API_Settings + 'pods'; })(jQuery); Prepare URLs and nonce from localized data for use in functions. Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 19. Get Items Via AJAX function getItem( id, pod ) { var URL = pods_URL + '/' + pod + '/' + 'id'; $.ajax({ type:"GET", url: url, dataType : 'json', beforeSend : function( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', api_Nonce ); }, success: function(response) { //do something } }); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 20. Save Items Via AJAX function saveItem( id, pod ) { var save_url = podsURL + '/' + pod + '/' + 'id'; var title = ''; var home_planet = ''; var lightsaber_color = ''; var JSONObj = { "title" : title, "home_planet" : home_planet, 'lightsaber_color' : lightsaber_color, "status" : 'publish' }; //encode data as JSON var data = JSON.stringify( JSONObj ); $.ajax({ type:"POST", url: save_url, dataType : 'json', data: data, beforeSend : function( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', apiNonce ); }, success: function(response) { alert( 'WOO!'); } }); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 21. Render With A Handlebars Template function getItem( id, pod, templateID, containerID ) { var get_url = podsURL + '/' + pod + '/' + 'id'; $.ajax({ type:"GET", url: get_url, dataType : 'json', beforeSend : function( xhr ) { xhr.setRequestHeader( 'X-WP-Nonce', apiNonce ); }, success: function(response) { var source = $( templateID ).html(); var template = Handlebars.compile( source ); var html = template( data ); $( container ).append( html ); } }); } Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 22. Non WordPress Front-ends Angular Client For Pods API https://github.com/bjoernklose/angular-wordpress-pods Using the WordPress REST API in a mobile app http://apppresser.com/using-wordpress-rest-api-mobile-app/ Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014
  • 23. Questions? Building Applications: Introduction to the Pods JSON API // Josh Pollock // PodsCamp 2014