Simple Web APIs for your Yii App

You are viewing revision #4 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.

next (#5) »

  1. How it Works
  2. How API url would look like
  3. Procedure:

How it Works

Its very common now-a-days to have Mobile app for web apps. For Mobile apps we need web APIs to fetch data or even post/update on web. We found a very simple method to make such interface. Mobile App can call plain get or post request and receive data back in JSON format. JSON is relatively easy for mobile app to handle while plain standard GET/POST request for easy for Web server to handle. This mixed approach saves lot of time on server side. We not really need to handle actual REST requests and still be able to exchange data between web and mobiles or ajax java-scripts or even node.js.

How API url would look like

Web : http://example.com/post/index [ returns HTML Web page ] API : http://example.com/api/post/index [ returns JSON Array ] [ please notice the 'api' ]

Procedure:

  • Create a test project in yii framework.
  • Enable URL as path as per doc: http://www.yiiframework.com/doc/guide/1.1/en/topics.url
  • Create new module named 'api' using gii.
  • Copy existing controller into newly created module .
  • Create new function in controller.php named sendJSONResponse()
  • Replace render() calls with sendJSONResponse() and pass php array.

And you are almost done.

public function sendJSONResponse( $arr)
	{
		header('Content-type: application/json');
		echo json_encode($arr);
		Yii::app()->end();
	}

This is how you can modify you actual action code.It should not have render code. I have a array having few parameter like status, action, controller which i want to return back to mobile app. This is required if your APIs are called asynchronously. So response should have details on which action was called.

public function actionLogout()
	{
		$arr = array('controller'=>$this->id, 'action'=>$this->action->id,'status' =>'OK');
		Yii::app()->user->logout();
		$this->sendJSONResponse($arr);
	}

Example : http://iseetv.biz/api/ Test Code: http://t1.toxsl.in/download.php?file=eWlpX2FwaXRlc3Quemlw [ Only for 30 days ]

1 2
10 followers
Viewed: 33 531 times
Version: Unknown (update)
Category: How-tos
Tags: API, JSON
Written by: shiv
Last updated by: CeBe
Created on: Jan 23, 2014
Last updated: 10 years ago
Update Article

Revisions

View all history

Related Articles