SlideShare uma empresa Scribd logo
1 de 31
REST API & 
Implementing it in 
CodeIgniter
Who Am I 
• PHP Developer & Consultant 
• Reviewed “Testing with Qunit” 
• Helped to bring out thesis on “Business 
Prospective of cloud computing” 
• Founder of Website “WebGunny.com” 
RIP Jun 2010 - Dec 2011
In this talk... 
• Why REST API is a heart of every product 
• REST API – As developer UI 
• Best Practices of REST API 
• REST API in codeigniter
Single Source of Truth
Your App is not isolated
Developer is your API customer
Building Developer Friendly API
Let’s Start with best practices 
API End Point : 
https://www.YourApp.com/Api/ 
OR 
https://Api.YourApp.com/ 
Finally Format: 
https://www.YourApp.com/Api/ResourceName
Identifying resources 
• You can make the resources more sensible 
based on your product 
• For example 
– Tasks 
– Comments 
– Notifications 
– Users 
– Projects 
– Files
JSON Everywhere
Make Use of HTTP Verbs 
• GET /task - Retrieves a list of task 
• GET /task/12 - Retrieves a specific task 
• POST /task - Creates a new task 
• PUT /task/12 - Updates task #12 
• PATCH /task/12 - Partially updates task #12 
• DELETE /task/ - Deletes all task 
• DELETE /task/12 - Deletes task #12
Map the relationships 
• GET /task/12/comments - Retrieves list of comments 
for task #12 
• GET /task /12/comments/5 - Retrieves comment #5 for 
task #12 
• POST /task /12/comments - Creates a new comments 
in task #12 
• PUT /task /12/comments/5 - Updates comments #5 for 
task #12 
• PATCH /task /12/comments/5 - Partially updates 
comment #5 for task #12 
• DELETE /task/12/comments/5 - Deletes comment #5 
for task #12
Search Sort & Filter 
• GET /tasks?sort=-priority - Retrieves a list of 
task in descending order of priority 
• GET /tasks?sort=-priority,created_at - 
Retrieves a list of tasks in descending order of 
priority then by date created
Aliases for common queries 
To make the API experience more pleasant for 
the average consumer 
GET /tasks?status=completed 
GET /tasks/recently_completed
Allow the fields to be selected 
The API consumer doesn't always need the full 
representation of a resource. 
GET /task?fields=id,title,updated_at
Paging of data 
Paging makes the API fast & responsive 
GET /notification?page=1&per_page=50
Return full resource after action 
• A PUT, POST or PATCH call may make 
modifications to fields 
• Return the updated (or created) 
representation as part of the response. 
• Prevent an API consumer from having to hit 
the API again
Auto loading related 
resources 
{ "id" : 12, 
“TaskName" : "I have a question!", 
"summary" : "Hi, ....", 
"customer" : { "name" : "Bob" }, 
assigned_user: { "id" : 42, "name" : "Jim", } 
}
Make Error Message Friendly 
• The API should always return sensible HTTP 
status codes 
• 400 series status codes for client issues & 500 
series status codes for server issues 
• API should standardize that all 400 series errors 
come with consumable JSON error 
representation 
{ "code" : 1234, 
"message" : “task field validation failed ", 
"description" : “Due date is not set" 
}
Authentication
API Status History
Documentation
REST API in Codeigniter 
UI/ Controller 
Your App 
Your API 
Rest Client
What we need 
• Codeigniter 
• chriskacerguis/codeigniter-restserver 
• Router implementation
Structuring the project 
/application 
/controller/ 
api/ //For all api controllers 
/libraries //For the third-party libraries 
REST_server.php 
Format.php 
/config //For all config files 
Router.php 
Rest_server.php
Router Implementation 
//res/id/function/id --> res/function/id/num/sid/num 
$route['api/([a-z_]+)/(:any)/([a-z_]+)/(:any)'] = 'api/$1/$3/id/$2/rid/$4'; 
//res/id/function --> res/function/id/num 
$route['api/([a-z_]+)/(:any)/([a-z_]+)'] = 'api/$1/$3/id/$2'; 
//res/function --> res/function 
$route['api/([a-z_]+)/([a-z_]+)'] = 'api/$1/$2/'; 
//res/id --> res/index/id/num 
$route['api/([a-z_]+)/(:any)'] = 'api/$1/index/id/$2'; 
//res/ --> //res/ 
$route['api/([a-z_]+)'] = 'api/$1';
Creating a first API controller 
require(APPPATH . '/libraries/Rest_Service.php'); 
class task extends REST_Service{ 
public function index_get() { //Logic } 
public function index_post() { //Logic } 
public function index_put() { //Logic } 
public function index_patch() { //Logic } 
public function index_delete() { //Logic } 
}
Every Function has 2 Reaction 
public function index_get() { 
if($this->get('id')) 
{ 
//Application Logic 
$this->response($results,$code); 
} 
else 
{ 
//Application Logic 
$this->response($results,$code); 
} 
}
HTTP Action Vs SQL 
• Get (select) 
– Get All 
– Get by ID 
• Post (Insert) 
• Put (update all fields ) 
• Patch (update selected fields) 
• Delete (delete) 
– Delete All 
– Delete by ID
Summary 
• REST API is heart of product 
• REST API is a developer UI 
• Follow the best practices of REST API 
• Use “chriskacerguis/codeigniter-restserver” to 
implement REST in codeigniter
Questions ? 
Website:SachinGKulkarni.com 
Twitter:@sachingk30 
Email:sachingk.30@gmail.com

Mais conteúdo relacionado

Mais procurados

Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache CamelApache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel
Omi Om
 

Mais procurados (20)

Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
Rest in flask
Rest in flaskRest in flask
Rest in flask
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
 
HotPics 2021
HotPics 2021HotPics 2021
HotPics 2021
 
Lombok
LombokLombok
Lombok
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Apache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache CamelApache ActiveMQ and Apache Camel
Apache ActiveMQ and Apache Camel
 
[Android] Using Selection Widgets
[Android] Using Selection Widgets[Android] Using Selection Widgets
[Android] Using Selection Widgets
 
Swagger UI
Swagger UISwagger UI
Swagger UI
 
Spring Cloud Config
Spring Cloud ConfigSpring Cloud Config
Spring Cloud Config
 
PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"PostgreSQL Query Cache - "pqc"
PostgreSQL Query Cache - "pqc"
 
Spring Cloud Workshop
Spring Cloud WorkshopSpring Cloud Workshop
Spring Cloud Workshop
 
btNOG 6: Next Generation Internet Registry Services - RDAP
btNOG 6: Next Generation Internet Registry Services - RDAPbtNOG 6: Next Generation Internet Registry Services - RDAP
btNOG 6: Next Generation Internet Registry Services - RDAP
 
Deploying PHP applications with Phing
Deploying PHP applications with PhingDeploying PHP applications with Phing
Deploying PHP applications with Phing
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Denys Serhiienko "ASGI in depth"
Denys Serhiienko "ASGI in depth"Denys Serhiienko "ASGI in depth"
Denys Serhiienko "ASGI in depth"
 
Postgresql các vấn đề thực tế
Postgresql các vấn đề thực tếPostgresql các vấn đề thực tế
Postgresql các vấn đề thực tế
 
PHPUnit
PHPUnitPHPUnit
PHPUnit
 
Mobile security part 1(Android Apps Pentesting)- Romansh yadav
Mobile security part 1(Android Apps Pentesting)- Romansh yadavMobile security part 1(Android Apps Pentesting)- Romansh yadav
Mobile security part 1(Android Apps Pentesting)- Romansh yadav
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 

Destaque

Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
Zoran Jeremic
 
Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5
Michael Girouard
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
Bo-Yi Wu
 

Destaque (20)

Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
Consuming RESTful services in PHP
Consuming RESTful services in PHPConsuming RESTful services in PHP
Consuming RESTful services in PHP
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
Advanced Web Services Hacking (AusCERT 06)
Advanced Web Services Hacking (AusCERT 06)Advanced Web Services Hacking (AusCERT 06)
Advanced Web Services Hacking (AusCERT 06)
 
ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgniter
 
PHP and Web Services
PHP and Web ServicesPHP and Web Services
PHP and Web Services
 
Secure Your REST API (The Right Way)
Secure Your REST API (The Right Way)Secure Your REST API (The Right Way)
Secure Your REST API (The Right Way)
 
Develop webservice in PHP
Develop webservice in PHPDevelop webservice in PHP
Develop webservice in PHP
 
Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5
 
REST API Doc Best Practices
REST API Doc Best PracticesREST API Doc Best Practices
REST API Doc Best Practices
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
 
Servicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHPServicio y Consumo de Servicios REST en PHP
Servicio y Consumo de Servicios REST en PHP
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
CodeIgniter L3 model & active record & template
CodeIgniter L3 model & active record  & templateCodeIgniter L3 model & active record  & template
CodeIgniter L3 model & active record & template
 
Api details for american syscorp
Api details for american syscorpApi details for american syscorp
Api details for american syscorp
 
Modular PHP Development using CodeIgniter Bonfire
Modular PHP Development using CodeIgniter BonfireModular PHP Development using CodeIgniter Bonfire
Modular PHP Development using CodeIgniter Bonfire
 
Codeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hookCodeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hook
 

Semelhante a REST API Best Practices & Implementing in Codeigniter

Practices and tools for building better APIs
Practices and tools for building better APIsPractices and tools for building better APIs
Practices and tools for building better APIs
NLJUG
 
AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...
AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...
AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...
Amazon Web Services
 

Semelhante a REST API Best Practices & Implementing in Codeigniter (20)

REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
 
Practices and tools for building better APIs
Practices and tools for building better APIsPractices and tools for building better APIs
Practices and tools for building better APIs
 
Practices and tools for building better API (JFall 2013)
Practices and tools for building better API (JFall 2013)Practices and tools for building better API (JFall 2013)
Practices and tools for building better API (JFall 2013)
 
REST APIs
REST APIsREST APIs
REST APIs
 
Cqrs api v2
Cqrs api v2Cqrs api v2
Cqrs api v2
 
High quality ap is with api platform
High quality ap is with api platformHigh quality ap is with api platform
High quality ap is with api platform
 
Introduction to CloudStack API
Introduction to CloudStack APIIntroduction to CloudStack API
Introduction to CloudStack API
 
Apic dc api deep dive
Apic dc api deep dive Apic dc api deep dive
Apic dc api deep dive
 
Rest with Spring
Rest with SpringRest with Spring
Rest with Spring
 
Super simple introduction to REST-APIs (2nd version)
Super simple introduction to REST-APIs (2nd version)Super simple introduction to REST-APIs (2nd version)
Super simple introduction to REST-APIs (2nd version)
 
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
 
Building Beautiful REST APIs with ASP.NET Core
Building Beautiful REST APIs with ASP.NET CoreBuilding Beautiful REST APIs with ASP.NET Core
Building Beautiful REST APIs with ASP.NET Core
 
Crafting APIs
Crafting APIsCrafting APIs
Crafting APIs
 
Developing Apps with Azure AD
Developing Apps with Azure ADDeveloping Apps with Azure AD
Developing Apps with Azure AD
 
AWS July Webinar Series: Overview: Build and Manage your APIs with Amazon API...
AWS July Webinar Series: Overview: Build and Manage your APIs with Amazon API...AWS July Webinar Series: Overview: Build and Manage your APIs with Amazon API...
AWS July Webinar Series: Overview: Build and Manage your APIs with Amazon API...
 
AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...
AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...
AWS July Webinar Series - Overview Build and Manage your APs with amazon api ...
 
Design Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyDesign Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John Hardy
 
Recipes for API Ninjas
Recipes for API NinjasRecipes for API Ninjas
Recipes for API Ninjas
 
Intro to GraphQL
 Intro to GraphQL Intro to GraphQL
Intro to GraphQL
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

REST API Best Practices & Implementing in Codeigniter

  • 1. REST API & Implementing it in CodeIgniter
  • 2. Who Am I • PHP Developer & Consultant • Reviewed “Testing with Qunit” • Helped to bring out thesis on “Business Prospective of cloud computing” • Founder of Website “WebGunny.com” RIP Jun 2010 - Dec 2011
  • 3. In this talk... • Why REST API is a heart of every product • REST API – As developer UI • Best Practices of REST API • REST API in codeigniter
  • 5. Your App is not isolated
  • 6. Developer is your API customer
  • 8. Let’s Start with best practices API End Point : https://www.YourApp.com/Api/ OR https://Api.YourApp.com/ Finally Format: https://www.YourApp.com/Api/ResourceName
  • 9. Identifying resources • You can make the resources more sensible based on your product • For example – Tasks – Comments – Notifications – Users – Projects – Files
  • 11. Make Use of HTTP Verbs • GET /task - Retrieves a list of task • GET /task/12 - Retrieves a specific task • POST /task - Creates a new task • PUT /task/12 - Updates task #12 • PATCH /task/12 - Partially updates task #12 • DELETE /task/ - Deletes all task • DELETE /task/12 - Deletes task #12
  • 12. Map the relationships • GET /task/12/comments - Retrieves list of comments for task #12 • GET /task /12/comments/5 - Retrieves comment #5 for task #12 • POST /task /12/comments - Creates a new comments in task #12 • PUT /task /12/comments/5 - Updates comments #5 for task #12 • PATCH /task /12/comments/5 - Partially updates comment #5 for task #12 • DELETE /task/12/comments/5 - Deletes comment #5 for task #12
  • 13. Search Sort & Filter • GET /tasks?sort=-priority - Retrieves a list of task in descending order of priority • GET /tasks?sort=-priority,created_at - Retrieves a list of tasks in descending order of priority then by date created
  • 14. Aliases for common queries To make the API experience more pleasant for the average consumer GET /tasks?status=completed GET /tasks/recently_completed
  • 15. Allow the fields to be selected The API consumer doesn't always need the full representation of a resource. GET /task?fields=id,title,updated_at
  • 16. Paging of data Paging makes the API fast & responsive GET /notification?page=1&per_page=50
  • 17. Return full resource after action • A PUT, POST or PATCH call may make modifications to fields • Return the updated (or created) representation as part of the response. • Prevent an API consumer from having to hit the API again
  • 18. Auto loading related resources { "id" : 12, “TaskName" : "I have a question!", "summary" : "Hi, ....", "customer" : { "name" : "Bob" }, assigned_user: { "id" : 42, "name" : "Jim", } }
  • 19. Make Error Message Friendly • The API should always return sensible HTTP status codes • 400 series status codes for client issues & 500 series status codes for server issues • API should standardize that all 400 series errors come with consumable JSON error representation { "code" : 1234, "message" : “task field validation failed ", "description" : “Due date is not set" }
  • 23. REST API in Codeigniter UI/ Controller Your App Your API Rest Client
  • 24. What we need • Codeigniter • chriskacerguis/codeigniter-restserver • Router implementation
  • 25. Structuring the project /application /controller/ api/ //For all api controllers /libraries //For the third-party libraries REST_server.php Format.php /config //For all config files Router.php Rest_server.php
  • 26. Router Implementation //res/id/function/id --> res/function/id/num/sid/num $route['api/([a-z_]+)/(:any)/([a-z_]+)/(:any)'] = 'api/$1/$3/id/$2/rid/$4'; //res/id/function --> res/function/id/num $route['api/([a-z_]+)/(:any)/([a-z_]+)'] = 'api/$1/$3/id/$2'; //res/function --> res/function $route['api/([a-z_]+)/([a-z_]+)'] = 'api/$1/$2/'; //res/id --> res/index/id/num $route['api/([a-z_]+)/(:any)'] = 'api/$1/index/id/$2'; //res/ --> //res/ $route['api/([a-z_]+)'] = 'api/$1';
  • 27. Creating a first API controller require(APPPATH . '/libraries/Rest_Service.php'); class task extends REST_Service{ public function index_get() { //Logic } public function index_post() { //Logic } public function index_put() { //Logic } public function index_patch() { //Logic } public function index_delete() { //Logic } }
  • 28. Every Function has 2 Reaction public function index_get() { if($this->get('id')) { //Application Logic $this->response($results,$code); } else { //Application Logic $this->response($results,$code); } }
  • 29. HTTP Action Vs SQL • Get (select) – Get All – Get by ID • Post (Insert) • Put (update all fields ) • Patch (update selected fields) • Delete (delete) – Delete All – Delete by ID
  • 30. Summary • REST API is heart of product • REST API is a developer UI • Follow the best practices of REST API • Use “chriskacerguis/codeigniter-restserver” to implement REST in codeigniter
  • 31. Questions ? Website:SachinGKulkarni.com Twitter:@sachingk30 Email:sachingk.30@gmail.com

Notas do Editor

  1. I am a PHP Developer & Consultant Have reviewed “Testing with Quinit” Helped to bring out thesis on Business Prospective of cloud computing Founder of webgunny.com – A iGaming portal whose revenue is based on advertisement. However, I shutdown that site after 1.8 years of operation
  2. Let’s say you started building your next product – A task management system. Users can login, add tasks, assign it to people in their team, discuss on a task, change status & so on. You built it in MVC – It’s a Nice Architecture and launched it. Around 10 users started using it...Few users became a fan of your app – A loyal users They demanded the app to be on Mobile devices with good native experience. Now the problem arises. You must rewrite the business logic for ios ,android, firefox os & so on. It’s like redoing the whole app in all the devices!!! That’s wired!!! Did we had made something which would have escaped us from this problem ? Yes, you should have implemented a REST API – Representational state transfer Application Programming Interface All your application, be it a desktop app, web app, mobile app will all your API to run your business logic Once the API is being implemented you can integrate with Google Glasses, iWatches anything you name....
  3. Now all your loyal users are happy. You customers increased. Soon one of your customer want to integrate your app with his home grown app Now you can ask your customer to use your API to integration Of course, with some authentation & authorization
  4. But...here is a catch..you actual API customer is not the end user. He is a developer Now the question is to how to make the developer happy with your API Simple answer – Build a developer friendly API
  5. It’s definitely not a rocket science. It’s just a common sense with some intelligence
  6. Build your API around HTTP Action – GET, POST, PUT,PATCH,DELETE In example you can see the first one retrieves all the tasks
  7. Next , Map the relationship First example retrives all the comments on a task #12
  8. Build a mechanism to search/sort/filter You can use some common sense here and build a aliases API call For example build a separate API call to get all recently completed tasks
  9. Let your API return full details about the task on every operation. Say you updated a task by calling a API request. Instead of just return Boolean if the activity is successful Just return full details of the task This will reduce the work of the developer to hit the API gain to get the updated data
  10. It’s a best practice to related data. For example, instead of just returning the assigned user ID It Return the whole user object/resource along with the user name. This will also reduce the number of hits to API server
  11. Make errors friendly to understand. API should always return sensible HTTP status code 200 – For successfully operation 400 – For errors data validation etc 500 – For server errors Also return the standard error object with the proper message stating why the operation failed. It would be good if you can provide a code for all your errors.