• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iOS 网络 API 设计模式的想法?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 13:36:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有以下设计模式查询问题。我有一个 PHP 网络服务,我想从中执行、登录授权和 SQL 操作,有些带有 NSDictionary 响应,有些带有 BOOL 响应。

我搜索了设计模式并点击了这个:Best architectural approaches for building iOS networking applications (REST clients)

虽然这篇文章很有趣,但我认为我不需要这么复杂的东西。我从作为assetDBConnection 的单例对象开始(在下面的代码中是self.delegate),但我不知道这是否是最好的主意。

我能想到从我的 APIWebRetrieve 数据检索器中抽象出我的assetDBConnection 的唯一方法是从响应中提取并比较字符串。这意味着将 PHP 服务级别的响应分组为类型,例如type="logon",等等等等。

-(void)APIWebRetrieveFinishedAPIWebRetrieve *)api
{
    NSLog(@"api:%@",[api description]);
    NSLog(@"%@",api.dataString);
    NSError *error;
    if (api.dataString) {
        NSDictionary *results=[NSJSONSerialization JSONObjectWithData:[api.dataString dataUsingEncoding:NSStringEncodingConversionAllowLossy]
                                    options:NSJSONReadingMutableContainers
                                      error:&error];

        if ([[results objectForKey"type"] isEqualToString"logon"]){
            if ([results objectForKey"response"]){
                [self.delegate loginOK];
            }else{
                [self.delegate loginFail];
            }
       }
    }
}

任何帮助表示赞赏。

更新: 好吧,这一定很无聊。没有反应。我已经开始添加另一个层,称为服务。我非常喜欢我现在弹出这种代码的事实:

#import "AssetDBConnection.h"
#import "AssetDBServiceLogon.h"

@implementation AssetDBConnection

-(BOOL)loginWithUsernameNSString*)user andPasswordNSString*)password
{
    [AssetDBService logonWithUsername:user password:password andDelegate:self];
}

我只希望这是朝着正确的方向发展!



Best Answer-推荐答案


风滚草!

因此,为什么我不妨发布自己的答案。即我所做的实现细节。

有一个 APIWebRetrieve 类对所有微服务进行 POST 网络调用(??我不太确定这是正确的术语),例如GetAssetDetails、MoveAsset、CreateFaultForAsset。 POST 调用具有操作类型,例如 =“asset-details”,并将 JSON 对象(转换为 NSDictionary)返回给 GetAssetDetails 对象,该对象然后返回与原始调用类型同名的键的数据内容。然后我将其返回到 AssetDBConnection Singleton,然后将其传递回单例 DBConnection 类的委托(delegate)。

我会试着画这个……

                     CallingViewController
                              |
                              |
                              |
  ------------AssetDBConnection (Singleton)-------------
  |            |          |         |                  |
GetAssetDetail  AssetFault   OtherMS  OtherMS           OtherMS  
Instance       Instance    Instance  Instance        Instance
  |              |              |         |              |
APIWebretrieve APIWebretrieve APIWeb....  APIWeb...   APIWeb...
Instance         Instance        Instance    Instance    Instance

该 |字符几乎代表了上层是下层的代表。

这个实现看起来如何? (哎呀回答中的问题,我会被击落)

不管是答案,这都是我的答案。

干杯

关于iOS 网络 API 设计模式的想法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775090/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap