Mik*_*ike 11 php mysql api facebook codeigniter
我正在开发一个小型网络应用程序.没有任何高级功能,只是来自数据库的基本查询.
该网站本身允许通过常规方式和Facebook Connect登录,然后它具有一些CRUD功能.
我将为它创建一个"原生"Facebook应用程序,以及一个iPhone应用程序和一个Android应用程序.
我的问题是,维护代码库的最佳方法是什么?
我之前已经创建了一个基本API,允许我添加,编辑和删除数据库记录,然后我在所有平台上使用HTTP POST到API.这使得维护代码库,修复错误,进行更新等非常容易,因为我只需要更新一个地方.各个应用程序本身只有一些皮肤,然后是一些cURL请求.虽然这对于移动应用程序(iPhone和Android)非常有用,但它确实在网站和Facebook应用程序上发出了不必要的http请求.
处理这种情况的最佳方法是什么?我应该创建2个网站(Facebook和普通网站)和API吗?这将使维护更加困难,但更加稳定和快速.只是一个API,这将使其易于维护?
代码库是CodeIgniter中的PHP,MySQL是数据库.
我认为你应该使用 php 类创建一个 API,然后在它周围封装一个 HTTP API。
PHP类API:
<?php // myproducts.class.php
class MyProducts
{
static function addProduct($name, $price)
{
// add the product
}
}
Run Code Online (Sandbox Code Playgroud)
然后是你的 HTTP API:
<?php // api/products.php
// read HTTP POST and decode it as json
$postParams = json_decode(file_get_contents('php://input'));
if (!$postParams)
throw new exception("Could not decode POST data, invalid JSON.");
// run the desired action
$classMethod = $postParams['action'];
$arguments = $postParams['arguments'];
$result = call_user_func_array(array('MyProducts', $classMethod), $arguments);
// print result as JSON
print json_encode($result);
Run Code Online (Sandbox Code Playgroud)
有了这个,您可以轻松编写 obj-c 类来与 HTTP API 对话。它可能看起来像:
NSData *postData = [@"{\"action\": \"addProduct\", \"arguments\": [\"Foo\", 42.00]}" dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:API_URL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:postData];
NSHTTPURLResponse *urlResponse = nil;
NSError *error = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
NSLog(@"response: %@", [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease]);
Run Code Online (Sandbox Code Playgroud)
显然,您需要找到一个用于编码/解码 JSON 的 Obj-C API。我正在使用TouchJSON
归档时间: |
|
查看次数: |
465 次 |
最近记录: |