【问题标题】:iOS REST design pattern adviceiOS REST 设计模式建议
【发布时间】:2013-09-15 05:52:41
【问题描述】:

我想了解是否有更好的设计模式可用于我的 iOS 应用程序,它使用 REST 模型与 Django 后端进行异步通信。

服务器目前可以对请求返回三种类型的响应:

  • 一个 JSON 对象
  • 服务器状态码整数
  • 很长的 Django 错误消息

在需要来自服务器的数据的 iOS 应用中执行操作时,我的设计模式如下所示:

  • 通知中心添加观察者,指定可以处理服务器响应的方法
  • 该方法放在一起并发送一个 NSURLConnection
  • NSURLConnection 委托方法接收响应,进行一些解释以检查它是哪种服务器响应,然后将适当的通知发布到通知中心
  • 这会触发响应方法运行,处理响应

我对这种模式的问题是编写了大量的方法来发送和接收单独的请求和响应类型。例如,如果我请求一个项目列表,我需要在通知中心添加几个观察者,一个处理用户列表,一个处理空白用户列表,一个处理错误。然后我需要为这三个中的每一个编写自定义方法,以根据服务器发送的响应类型执行适当的操作并删除观察者。

此外,NSURLConnection 委托最终变得相当复杂,因为我试图解释收到的响应类型(收到的列表中的项目类型?)确保当服务器消息返回时我不会调用错误的响应方法。

我对 iOS 编程和 REST 编程都很陌生,所以我可能会遗漏一些明显的东西。感谢任何建议或资源链接。

【问题讨论】:

    标签: ios objective-c rest


    【解决方案1】:

    我最初会考虑使用 RestKit 将您的代码从网络通信中抽象出来,这样您就可以更多地担心数据模型和高级请求。其次,我不会为此使用通知,因为它可能会变得混乱并且很难管理多个同时请求 - 委托或阻止回调会更好。

    【讨论】:

    • 好建议,我之前没有听说过RestKit,我认为委托会比我现在做的更好。
    【解决方案2】:

    您的 REST 实现主要是服务器端的,从经验上讲,您将传递和接收二进制文件。有一些因素需要考虑,包括您是否使用 HTTP。

    使用带有 NSJSONSerialization 类和 NSURLConnection 的 JSON 可以让您的程序更加精简和平均。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多