不依赖Parse或Firebase,如何开始为你的iOS应用程序创建后端

不依赖Parse或Firebase,如何开始为你的iOS应用程序创建后端

你的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’ 在并不存在(但很快会有的)的本地服务器上。让我们来看看这个函数的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
func printMessagesForUser()  - > Void {
             
     let json  = [ "user" : "larry" ]
             
     do {
                 
         let jsonData  = try NSJSONSerialization.dataWithJSONObject(json, options: .PrettyPrinted)
                 
         let url  = NSURL(string:  "http://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请求到“http://127.0.0.1:5000/api/get_messages”。当然,如果我们现在运行这段代码,它是不会运行的,因为我们还没有创建端点“ttp://127.0.0.1:5000/api/get_messages”。这是下一步我们将要做的。

安装Flask(如果你还没有,就用Python)

不依赖Parse或Firebase,如何开始为你的iOS应用程序创建后端

检查Python和Flask文档。

写后端函数

现在,我们必须为我们的iOS函数创建get_messages端点。这是它在默认Flask文件中的样子,app.py:

1
2
3
4
5
6
@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有以下的命令:

1
2
if __name__  = = '__main__' :
     app.run(debug  = True )

现在你可以运行app.py来启动Flask服务器:

1
Python app.py

这将以默认端口为5000启动托管在你的本地主机上的Flask服务器。

从你的应用程序调用函数

其实看到你的后端API返回的东西会给你后端构建冒险继续前进的动力。

运行你一开始写的“getMessages” Swift函数——把它贴在你的主要视图控制器或应用程序委托上,然后重构。另外,确保你添加了以下代码到你的info.plist,这样你就可以在开发阶段禁用iOS运输安全需求:

1
2
3
4
5
<key>NSAppTransportSecurity< / key>
< dict >
     <key>NSAllowsArbitraryLoads< / key>
     <true>
< / true>< / dict >

一旦你得到在控制台上打印出来的数组{“test1”、“test2”},你就知道你已经成功地调用自己的后端。如果你没有得到这组输出,就继续调整直到你拿到它。

如果你看到了这里,祝贺你。通过更多的“填补空白”(学习一些Python,为数据库查询插入一个ORM),你现在不需要Parse或任何形式的BaaS服务就可以编写一个后端。

这是过于简单化的吗?是的,我们刚刚编写的并不是一个完整的后端。适当的API设计、数据库设计、服务器维护和可扩展性都是你将不得不解决的问题,以便你可以继续你的旅程。但是如果你这样开始,那么你已经有了一个基础,你必须控制你自己的系统。相比依赖于可能对你随时拔掉插头的另一个第三方提供者,这种控制要好得多。

本文翻译自:How to Start Building a Backend for Your iOS App Without Relying on Parse or Firebase


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值