<html>
<head>
<title>Example Use PhpApiServer</title>
</head>
<body>
<h1>Example of use of PhpApiServer</h1>
<h2>General Description.</h2>
<img src="img/flag-it.gif" width="32" height="21"/>
<p><i>
"Avevo bisogno di un server veloce, basilare ed efficace per un'app android che sto realizzando,<br/>
Così ho pensato di creare una base da utilizzare anche per future evenienze.<br/>
Ed è nato PhpApiServer, nome discutibile lo so!, ma per ora basta e avanza al mio scopo.<br/>
Magari in futuro potrei ampliarlo con nuove features...come sempre accetto critiche e\o suggerimenti da<br/>
parte vostra!."</i><br/><b>E.Moretti</b><br/>
</p>
<br/>
<img src="img/icon_flag_us_en.gif" width="32" height="21"/>
<p>
<i>"I needed a fast, basic and effective server app for Android that I'm making, <br/>
So I decided to create a base to use for future eventualities. <br/>
And was born PhpApiServer, name questionable know! but for now is more than enough for my purpose. <br/>
Maybe in the future I might extend it with new features ... as always accept criticism and \ or suggestions <br/>
your part!."</i>
<br /> <b> E.Moretti </b> <br/>
</p>
<h2>Communication with the server</h2>
<img src="img/flag-it.gif" width="32" height="21"/>
<p>
La comunicazione con il server avviene attraverso il protocollo HTTP.<br/><br/>
La richiesta dovrà essere simile alla seguente:
<b>http://<indirizzo del vostro server>/<NOME API>/<NOME METODO>?arg1=value1&arg2=value2&...argN=valueN</b>
<br/>Esempio: <b>http://localhost/User/login?username=myname&password=mypassword</b><br/><br/>
In caso di errori di invocazione, formattazione e quant'altro il server invierà una response in formato JSON<br/>
Per quanto riguarda le vostre API, siete liberi di utilizzare altri formati, se lo ritenete opportuno.<br/>
</b>
</p>
<br/>
<img src="img/icon_flag_us_en.gif" width="32" height="21"/>
<P>
The communication with the server is via HTTP. <Br/ > <br/>
The request should be similar to the following: <b>http://<your server address>/<API NAME>/<METHOD NAME>?arg1=value1&arg2=value2&...argN=valueN</b> <br/ >
Example: <b>http://localhost/User/login?Username=myname&Password=mypassword</b> <br/> <br/>
In case of errors of invocation, formatting, and whatever else the server will send a response in JSON format<br/>
As regards your API, you are free to use other formats, if appropriate. <br/> </b>
<h2>How to build your own API</h2>
<img src="img/flag-it.gif" width="32" height="21"/>
<p>
1-Creare una classe con il nome della vostra API.<br/>
2-Implementare l'interfaccia API.<br/>
3-Aggiungete un costruttore (anche vuoto)<br/>
<pre>
public function __construct(){}
</pre><br/>
4-Aggiungete il metodo getDesc():<br>
<pre>
public static function getDesc(){
return "User class, used for login and register a user";
}
</pre>
<br/>
5-Aggiungete la vostra fantasia in ogni metodo! :)
<br/><br/>
<img src="img/icon_flag_us_en.gif" width="32" height="21"/>
</p>
1-create aclass with the name of your API.<br/>
2-Implement interface API. <br/>
3-Add a constructor (also empty)
<pre> public function __construct() {}</pre>
<br/>4-Add the getDesc method ():
<pre>
static function getDesc () {
return ' User class, used for login and register a user;
}
</pre>
<br/>5-Add your fantasy in every method! :)
<h2>How use a database in your API</h2>
<p>
<img src="img/flag-it.gif" width="32" height="21"/>
All'interno delle vostre API, potrete usifruire dell'istanza della classe "database".<br/>
La classe database.php non è mia, ma un wrapper PDO scaricabile al link: <b>http://www.imavex.com/php-pdo-wrapper-class/</b> Qui troverete anche un ampia documentazione per l'uso.
<br/><br/>
<img src="img/icon_flag_us_en.gif" width="32" height="21"/>
Inside of your API, you can usifruire the instance of the class 'database'. <br/>
The class database.php is not mine, but a wrapper PDO can be downloaded at the link: <b>http://www.imavex.com/php-pdo-wrapper-class/</b> Here you will also find an extensive documentation for the use.
</p>
<br/>
<h2>Describe server tool</h2>
<img src="img/flag-it.gif" width="32" height="21"/>
<p>
Describe è una API di sistema, che permette di recuperare informazioni utili sulla API di nostro interesse.
<br/>
Esempio:
<b>http://localhost/Describe/<NOME API></b>
<br/>
Json Response:<br/>
<pre>
{
Api name: "User",
Callable Method: {
1: {
Name: "login",
Parameter: ["username","password"]
},
2: {
Name: "register"
}
},
Short description: "User class, used for login and register a user"
}
</pre>
<br/>
<img src="img/icon_flag_us_en.gif" width="32" height="21"/>
<p>
Describe is a system API, which allows you to retrieve information about our interest in API.<br/>
Example:<b> http://localhost/Describe/<API NAME></b>
<br/>Json Response:
<pre>
{
Api name: "User",
Callable Method: {
1: {
Name: "login",
Parameter: ["username","password"]
},
2: {
Name: "register"
}
},
Short description: "User class, used for login and register a user"
}
</pre>
</p>
</p>
<h2>Android Example use</h2>
<img src="img/flag-it.gif" width="32" height="21"/>
<p>Magari per chi come me utilizzerà questo codice per una app mobile android potrebbe essere utile capire come invocare una API
<br/><br/><img src="img/icon_flag_us_en.gif" width="32" height="21"/>
<br/><br/>Maybe for those who like me will use this code to an android mobile app you might want to figure out how to invoke an API
<br/><br/>
<b>EXAMPLE ANDROID JAVA CODE</b>
<br/>
[...]<br/>
<pre>
public static JSONObject getJSONFromHttpPost(String URL) {
try{
// Create a new HttpClient and Post Header
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL);
String resultString = null;
long t = System.currentTimeMillis();
HttpResponse response = (HttpResponse) httpclient.execute(httpPost);
System.out.println("HTTPResponse received in [" + (System.currentTimeMillis()-t) + "ms]");
// Get hold of the response entity (-> the data):
HttpEntity entity = response.getEntity();
if (entity != null) {
// Read the content stream
InputStream instream = entity.getContent();
// convert content stream to a String
resultString= convertStreamToString(instream);
instream.close();
System.out.println("result String : " + resultString);
//resultString = resultString.substring(1,resultString.length()-1); // remove wrapping "[" and "]"
System.out.println("result String : " + resultString);
// Transform the String into a JSONObject
JSONObject jsonObjRecv = new JSONObject(resultString);
// Raw DEBUG output of our received JSON object:
System.out.println("<JSONObject>\n"+jsonObjRecv.toString()+"\n</JSONObject>");
return jsonObjRecv;
}
}catch(Exception e){e.printStackTrace();}
return null;
}
private static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line ="";
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
</pre>
[...]</br>
<b>JSON String</b>
<pre>
{
"result": "0",
"LoginResponse":
[
{"FirstName":"Ettore",
"LastName":"Moretti"
"BirtDate":"01/01/1901",
"CountryName":"Italy"
}
]
}
</pre>
</p>
<br/><br/><br/>
</body>
</html>
<?php exit; ?>
|