|
|
|
|
Thread title: API Development |
|
|
|
|
|
Thread tools
Search this thread
Display Modes
|
|
12-06-2011, 01:05 AM
|
#1
|
Status: Junior Member
Join date: Sep 2006
Location:
Expertise: PHP,MySQL, HTML(5), CSS
Software: Photoshop, Sublime Text2,MS VS
Posts: 63
|
API Development
Can anyone please explain in simple terms from a to z how to develop an API? Please do not assume developing an API with any other technology or programming language except PHP or pseudo-code. Thank you.
|
|
12-06-2011, 04:04 AM
|
#2
|
Status: Geek
Join date: Apr 2006
Location: Denver, CO
Expertise: Software
Software: Chrome, Notepad++
Posts: 6,894
|
When asking for help on a forum it's an equal effort thing. You are never going to get more effort put into helping you than you put towards it. Go on Google and look up API development, if you don't understand the programming you'd have to learn that first anyways. If you need help with any specific questions we can help you with that, but no one is going to come in and write what you are asking for.
|
|
12-06-2011, 01:30 PM
|
#3
|
Status: Junior Member
Join date: Sep 2006
Location:
Expertise: PHP,MySQL, HTML(5), CSS
Software: Photoshop, Sublime Text2,MS VS
Posts: 63
|
I do know how to program. I have been searching the internet but the only tutorials I can find do not explain how they are developed. I never totally rely on forums.
|
|
12-06-2011, 06:14 PM
|
#4
|
Status: Geek
Join date: Apr 2006
Location: Denver, CO
Expertise: Software
Software: Chrome, Notepad++
Posts: 6,894
|
Thats more specific, but I'm afraid I don't really understand the question. All an API does is get requests (via GET/POST, SOAP, XML, REST, ect.) and send a response out via that method. What happens internally is no different than any other script.
|
|
12-07-2011, 04:11 AM
|
#5
|
Status: Junior Member
Join date: Sep 2006
Location:
Expertise: PHP,MySQL, HTML(5), CSS
Software: Photoshop, Sublime Text2,MS VS
Posts: 63
|
I understand this but I need to know how...something like a storyboard maybe. Basically if the same approach for learning control structures and OOP can be applied in order learn how to create an API would be great.
|
|
12-07-2011, 05:38 AM
|
#6
|
Status: Geek
Join date: Apr 2006
Location: Denver, CO
Expertise: Software
Software: Chrome, Notepad++
Posts: 6,894
|
Forgive me if I start a little basic here, I’ll get directly to your query soon.
The use for an API is to expose functionality without giving any sort of real access to your server. This allows third parties to do things while allowing you complete control over it. So to start developing an API you first need to figure out what functionality to expose. For the purposes of example let’s look at this form the perspective of someone who needs to build an API. The reseller, RecordInformant™ (completely made up), has a bunch of server that can search terabytes of information using a proprietary method they spent nearly a million dollars developing. Now we don’t care what our clients sell this for or how do they any of that, they get to query us unlimited times per term for $50,000 a year. This business model presents an issue because it is unreasonable to give 5tb of information to each client with 10gb of data updates each day and expect them to have the server capabilities for this, furthermore you want to keep your search methods a secret. The solution to this is an API. We control all the servers and there is one copy of the data in our datacenter.
RecordInformant has a number of secret search features in PHP, two being searchAddressesForName($name) which can search though billions of address records in seconds and the second is searchFormerNames($name) which does about the same thing. To expose it they might use some code like the following (this is 100% untested PHP):
PHP Code:
<?php include("../core/reallyImportantStuff.php");
//Check the cridentials if(loginCheck($_REQUEST["user"],$_REQUEST["pass"])==true) { //A real script would use better methods to create XML but I don't want to look up the docs for how to do it. $output = '<?xml version="1.0"?>'; if($_REQUEST["method"]=="getAddressesForName") { $output .= "<response method='getAddressForName'>"; $addrs=getAddressesForName($_REQUEST["name"]); foreach($addrs as $addr) { $output .= "<record><year>$year</year><fullAddress>$fullAddr</fulladdress></record>"; } $output .= "</response>"; } elseif($_REQUEST["method"]=="searchFormerNames") { $output .= "<response method='searchFormerNames'>"; $addrs=searchFormerNames($_REQUEST["name"]); foreach($addrs as $addr) { $output .= "<record><year>$year</year><fullName>$fullName</fullName></record>"; } $output .= "</response>"; } } else { echo "No Acccess"; }
This API takes POST/GET requests and sends back an XML response. So a reseller would query the URL ( https://api.recordinformant.com/api....Name&name=John Doe) and get the response:
HTML Code:
<?xml version="1.0"?>
<response method='getAddressForName'>
<record><year>1989</year><fullAddress>132 W. 54th Ave, New York, NY</fulladdress></record>
<record><year>1992</year><fullAddress>3524 E Grant St, Queens, NY</fulladdress></record>
<record><year>2002</year><fullAddress>4522 N Maple Ave, Portland, ME</fulladdress></record>
</response>
Which he can display to the client and maybe do some more things like integrate the addressed with Google maps.
APIs can get far more complicated than this, the one I work with the most (Ubersmith) has many functions that can do anything from create hosting accounts to generate invoices. It’s closed source so that is the way they chose to allow their clients to get custom stuff done. Different APIs also differ in their approach to this, some use GET/POST in and XML out, some use XML in and out, some use REST, SOAP or JSON both way. Furthermore it doesn't have to be in one file, instead of passing a method parameter some have a different file for each one (although almost all of them give a method in the response). Others that use a structured input such as XML can even support many queries at once, giving a structured response back.
|
|
12-07-2011, 06:15 PM
|
#7
|
Status: Junior Member
Join date: Sep 2006
Location:
Expertise: PHP,MySQL, HTML(5), CSS
Software: Photoshop, Sublime Text2,MS VS
Posts: 63
|
I don't bind you being basic about it. In fact, I loved your case study. Many thanks for the explanation and for not getting too complicated with the example. I have only one question. Is it a necessity to return the response with the name of the original request time?
|
|
12-07-2011, 06:42 PM
|
#8
|
Status: Geek
Join date: Apr 2006
Location: Denver, CO
Expertise: Software
Software: Chrome, Notepad++
Posts: 6,894
|
I've never seen an API return the request time, if the issuing server wants to know it they can simply log it themselves.
|
|
12-07-2011, 06:44 PM
|
#9
|
Status: Junior Member
Join date: Sep 2006
Location:
Expertise: PHP,MySQL, HTML(5), CSS
Software: Photoshop, Sublime Text2,MS VS
Posts: 63
|
Sorry. I meant request name.
|
|
12-07-2011, 06:48 PM
|
#10
|
Status: Geek
Join date: Apr 2006
Location: Denver, CO
Expertise: Software
Software: Chrome, Notepad++
Posts: 6,894
|
Not required but its nice to do. It's not really necessary in GET/POST inputs like that where only one request can be done at a time but if an API is going to be handling multiple requests at once it has to list what response belongs to what or it is useless.
|
|
|
|
|
|
|
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
|
|