接口常量定义方式

作者: 囧书 | 来源:发表于2016-09-14 18:02 被阅读407次

尝试过以下几种方式都不太理想:

  • 不对接口名作定义,直接编写字符串
    缺点:没有统一管理的地方,接口值散落,同一接口多处使用时不易维护,易拼写错误;接口值作为数据资源不应直接混入逻辑代码中
NSString *urlString = [NSString stringWithFormat:@"%@%@", @"http://www.baidu.com/", @"app/login"];
  • 宏定义接口名
    缺点:接口各自定义,没有形成集合或类型。在把接口作为参数传值时,只能以字符串为类型接收。
#define ServerHost @"http://www.baidu.com/"
#define ServerApiLogin @"app/login"
NSString *urlString = [NSString stringWithFormat:@"%@%@", ServerHost, ServerApiLogin];
  • 用枚举定义接口名+plist文件映射存储接口字符串
    缺点:枚举值是整型,导致接口多了顺序属性,顺序或者说索引并不是接口应该含有需要的东西,反而会成为累赘,不利于接口集的增删插入
// ServerApi.plst存储了接口字符串数组
NSURL *url = [[NSBundle mainBundle] URLForResource:@"ServerApi" withExtension:@"plist"];
NSArray *array = [NSArray arrayWithContentsOfURL:url];
NSString *api = array[ServerApi];
NSString *urlString = [NSString stringWithFormat:@"%@%@", ServerHost, api];

使用字符串常量+类型定义

这是参考苹果API的定义方式

//
//  JXRequester.h
// 
#import <UIKit/UIKit.h>

typedef NSString * ServerApi;

UIKIT_EXTERN ServerApi const ServerApiLogin;
UIKIT_EXTERN ServerApi const ServerApiRegister;
UIKIT_EXTERN ServerApi const ServerApiBannerList;

@interface JXRequester : NSObject

+ (void)postApi:(ServerApi)api params:(NSDictionary *)params completion:(void (^)())completion;

@end
//
//  JXRequester.m
//  
#import "JXRequester.h"

NSString * const ServerHost = @"http://www.baidu.com/";

ServerApi const ServerApiLogin = @"app/ServerApiLogin";
ServerApi const ServerApiRegister = @"app/ServerApiRegister";
ServerApi const ServerApiBannerList = @"app/ServerApiBannerList";

@implementation JXRequester

+ (void)postApi:(ServerApi)api params:(NSDictionary *)params completion:(void (^)())completion {

    NSString *urlString = [NSString stringWithFormat:@"%@%@", ServerHost, api];
}

@end
//
//  ViewController.m
//  
#import "ViewController.h"
#import "JXRequester.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self onLoginButton];
}

#pragma mark - 登录
- (void)onLoginButton {
    NSDictionary *parms = @{@"username" : @"jiongxing",
                            @"password" : @"123456"};
    [JXRequester postApi:ServerApiLogin params:parms completion:^{
        
    }];
}

若有更好思路欢迎留言 ^^

相关文章

  • 接口常量定义方式

    尝试过以下几种方式都不太理想: 不对接口名作定义,直接编写字符串缺点:没有统一管理的地方,接口值散落,同一接口多处...

  • 2019-05-10

    汇总 接口 接口中可以定义常量,不能定义变量; 接口中的属性都是全局静态常量,接口中的常量必须在定义时指定初始值。...

  • 面向对象

    接口当中的常量的使用: 1,接口当中定义的常量:可以省略public static final。2,接口当中定义的...

  • java11(接口与多实现)

    接口: interface 用于定义接口 1 接口中常见定义:常量,抽象方法 2 接口中的...

  • 常量与枚举在项目中的使用

    系统里实现常量的方式有三种:1、接口常量2、类常量3、枚举 1、接口常量:jdk1.5之前,没有枚举类,有的用接口...

  • javase part13 - 接口

    接口是抽象方法和常量值的定义的集合接口也是一种抽象类,只能定义常量和方法接口中的方法默认为抽象的,因为接口也不知道...

  • 第七章 收费计算

    接口的定义 定义接口: 定义的关键字为interface,接口中的属性和方法必须是静态的常量和抽象的方法。 接口的...

  • java常量定义方式

    应该都会遇到在项目中定义一些常量,通常有三种实现方式:a. 接口常量b. 类常量c. 枚举我们一起了解下这几种 接...

  • 接口与抽象类的区别:

    接口: 接口里只能包含抽象方法,不同包含已经提供实现的方法 接口里只能定义静态常量属性,不能定义普通属性。 接口不...

  • C++自学计划-常量-05

    常量定义的两种方式:全局常量: 局部常量: 例子: 运行结果:

网友评论

    本文标题:接口常量定义方式

    本文链接:https://www.haomeiwen.com/subject/urgvettx.html