提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:黄竹雯|2016-08-24 10:18:45.000|阅读 768 次
概述:你的iOS应用程序需要后端。随着Parse关闭了商店,现在我们该做什么呢?找到一个Parse替换或建立自己的后端?来看看Moe Burney决定做什么。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
你的iOS应用程序需要后端。随着Parse关闭了商店,现在我们该做什么呢?找到一个Parse替换或建立自己的后端?
我坚定地站在“学会建立自己的”后端阵营这边。
许多开发人员建议不要建立自己的后端。BaaS关闭后,这些开发商争相寻找下一个替换BaaS。然后他们也会试图说服你使用替换BaaS。但我们都知道有些事不可避免的会发生。有一天你会从你的BaaS提供者处得到一个“惊喜”邮件,通知你他们正好在你的新应用程序版本推出时关闭。
我记得那次也发生在我身上——一个我依靠的BaaS关闭了。当我第一次看到关闭通知的邮件时,我觉得被利用了。我感到被出卖了。然后我感到很生气。我陷入了一个恶性循环,我孤立了自己。我吃冰淇淋,边淋浴边听Celine Dion而哭泣。我应该能够预见这种事的,但是我被方便的幻觉和服务提供的稳定诱惑了。但这都只是——一个错觉。
为什么不可靠的BaaS提供商不断出现还对我们这样可怜的移动开发者这样做呢?
学习如何建立后端是一项很重的工作。这就是为什么BaaS似乎是一个不错的选择。
但如果你想挣脱BaaS的依赖而构建自己的后端,关键之处在于:不要试图了解后端的一切!我们需要从小事做起。
当你创建你的第一个iOS应用程序,你可能没有专注于让它成为可伸缩和可维护的。你第一次没有太多压力,UITableview单元格得以回收和显示错误的数据。你可能并不担心你的应用是否应该遵循MVC或MVVM或MMVCM(我将其放在最后一个)。我敢打赌你的第一个应用可能从来没有让它试过模拟器。
我建议以同样的方法建立后端:从小事做起。先做一些小事情,无论多么的小。然后在此基础上进行创建。
你不需要把自己埋在关于Python或Ruby的书里,或者你可以得到一个后端启动并运行之前学习关于服务器的一切。设计整个API,部署它,扩展它——所有这些事情都可以稍后进行。
首先这样做:
写一个会调用你的后端的iOS函数,甚至在你构建后端之前
这是一个例子。假设你决定你的第一个函数会调用可以检索一个特定用户的信息的API。
下面的函数由Swift编写,建一个POST请求‘/ get_messages’ 在并不存在(但很快会有的)的本地服务器上。让我们来看看这个函数的代码:
func printMessagesForUser() -> Void { let json = ["user":"larry"] do { let jsonData = try NSJSONSerialization.dataWithJSONObject(json, options: .PrettyPrinted) let url = NSURL(string: "//127.0.0.1:5000/api/get_messages")! let request = NSMutableURLRequest(URL: url) request.HTTPMethod = "POST" request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") request.HTTPBody = jsonData let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in if error != nil{ print("Error -> \(error)") return } do { let result = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as? [String:AnyObject] print("Result -> \(result)") } catch { print("Error -> \(error)") } } task.resume() } catch { print(error) } }
这段代码建了一个带用户名“larry”的POST请求到“//127.0.0.1:5000/api/get_messages”。当然,如果我们现在运行这段代码,它是不会运行的,因为我们还没有创建端点“ttp://127.0.0.1:5000/api/get_messages”。这是下一步我们将要做的。
安装Flask(如果你还没有,就用Python)
检查Python和Flask文档。
写后端函数
现在,我们必须为我们的iOS函数创建get_messages端点。这是它在默认Flask文件中的样子,app.py:
@app.route('/api/get_messages', methods = ['POST']) def get_messages(): json = request.get_json() if json['user'] == "larry": return jsonify({'messages':['test1', 'test2']}) return jsonify({'error':'no user found'})
这个Python/Flask存根函数非常简单。顶部的@app.route装饰指定函数应该对应于‘get_messages’端点,它应该是一个POST请求。 ‘get_messages’函数的主题检查request.get_json()——一个Flask函数,返回一个代码,其中包含POST请求中发送的值。如果用户名“larry”的消息是‘user’的请求参数,那么函数会发送给客户端包含一个字符串数组“test1”和“test2”的JSON对象代码。
get_messages函数返回硬编码JSON,但是以后你可以将它连接到一个真正的数据库。在那之前,运行Flask服务器和iOS客户端,看看你的后端的第一个构建块是否能够运行。接下来我们将这样做。
运行本地服务器
我们确保app.py有以下的命令:
if __name__ == '__main__': app.run(debug = True)
现在你可以运行app.py来启动Flask服务器:
Python app.py
这将以默认端口为5000启动托管在你的本地主机上的Flask服务器。
从你的应用程序调用函数
其实看到你的后端API返回的东西会给你后端构建冒险继续前进的动力。
运行你一开始写的“getMessages” Swift函数——把它贴在你的主要视图控制器或应用程序委托上,然后重构。另外,确保你添加了以下代码到你的info.plist,这样你就可以在开发阶段禁用iOS运输安全需求:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
一旦你得到在控制台上打印出来的数组{“test1”、“test2”},你就知道你已经成功地调用自己的后端。如果你没有得到这组输出,就继续调整直到你拿到它。
如果你看到了这里,祝贺你。通过更多的“填补空白”(学习一些Python,为数据库查询插入一个ORM),你现在不需要Parse或任何形式的BaaS服务就可以编写一个后端。
这是过于简单化的吗?是的,我们刚刚编写的并不是一个完整的后端。适当的API设计、数据库设计、服务器维护和可扩展性都是你将不得不解决的问题,以便你可以继续你的旅程。但是如果你这样开始,那么你已经有了一个基础,你必须控制你自己的系统。相比依赖于可能对你随时拔掉插头的另一个第三方提供者,这种控制要好得多。
本文翻译自:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢