建立(目标C?基于 Mac 的网络服务



多年来,我开发了许多iOS应用程序,因此对Objective C相当了解。

我想构建我的第一个 Web 服务来卸载一些处理器密集型功能。

我倾向于使用我的Mac作为服务器,它随Apache一起提供。 我已经配置了它,它似乎可以正常工作(我可以输入 Mac 的 IP 地址并收到确认)。

现在我正在尝试决定如何构建服务器端 Web 服务,这对我来说是全新的。 如果可能的话,我想利用我的Objective C知识。 我想我正在寻找一个与 Objective C 兼容的 Web 服务引擎,以及一些如何将其连接到浏览器和移动界面的示例。 我倾向于使用亚马逊的SimpleDB作为数据库。

顺便说一句:我看到苹果有狮子服务器,但我无法确定这是否是一种选择。

任何想法/建议不胜感激。?

有一些用 ObjC 编写的简单 Web 服务器的例子,比如这个和这个。

也就是说,如果您不介意使用其他技术,可能会有"更好"的方法。 这是一个偏好问题;但是我已经使用Python,MySQL和出色的 web.py 框架来构建这些后端。

例如,下面是一个示例 Web 服务(省略了一些冗余...),使用所描述的技术组合。 我只是在我的服务器上运行它,它负责 url 重定向并从数据库提供 JSON。

import web
import json
import MySQLdb
urls = (
    "/equip/gruppo", "gruppo",  # GET = get all gruppos, # POST = save gruppo
    "/equip/frame", "frame"
)
class StatusCode:
    (Success,SuccessNoRows,FailConnect,FailQuery,FailMissingParam,FailOther) = range(6);
#   top-level class that handles db interaction
class APIObject:
    def __init__(self):
        self.object_dict = {}       # top-level dictionary to be turned into JSON
        self.rows = []
        self.cursor = ""
        self.conn = ""
    def dbConnect(self):
        try:
            self.conn = MySQLdb.connect( host = 'localhost', user = 'my_api_user', passwd = 'api_user_pw', db = 'my_db')
            self.cursor = self.conn.cursor(MySQLdb.cursors.DictCursor)
        except:
            self.object_dict['api_status'] = StatusCode.FailConnect
            return False
        else:
            return True
    def queryExecute(self,query):
        try:
            self.cursor.execute(query)
            self.rows = self.cursor.fetchall()
        except:
            self.object_dict['api_status'] = StatusCode.FailQuery
            return False
        else:
            return True
class gruppo(APIObject):
    def GET(self):
        web.header('Content-Type', 'application/json')
        if self.dbConnect() == False:
            return json.dumps(self.object_dict,sort_keys=True, indent=4)
        else:
            if self.queryExecute("SELECT * FROM gruppos") == False:
                return json.dumps(self.object_dict,sort_keys=True, indent=4)
            else:
                self.object_dict['api_status'] =  StatusCode.SuccessNoRows if self.rows.count == 0 else StatusCode.Success
                data_list = []
                for row in self.rows:
                    # create a dictionary with the required elements
                    d = {}
                    d['id'] = row['id']
                    d['maker'] = row['maker_name']
                    d['type'] = row['type_name']
                    # append to the object list
                    data_list.append(d)
                self.object_dict['data'] = data_list
                # return to the client
                return json.dumps(self.object_dict,sort_keys=True, indent=4)

相关内容

  • 没有找到相关文章

最新更新