YTKNetwork使用application json方式传递参数

YTKBaseRequest的requestSerializerType属性默认值是YTKRequestSerializerTypeHTTP,对应的Content-Type类型是application/x-www-form-urlencoded,form表单数据需要被编码为key/value格式发送到后台,一般的使用方式如下(以编辑车牌接口为例):

@implementation SCCarParkUpdateCarRelationAPI

- (NSString *)requestUrl
{
    return [NSString stringWithFormat:@"carParkApplication/%@/updateCarRelation", self.orderId];
}

- (YTKRequestMethod)requestMethod
{
    return YTKRequestMethodPOST;
}

- (id)requestArgument
{
    return self.params;
}

- (void)setCarLicenceList:(NSArray *)carLicenceList
{
    // 服务列表信息
    NSData *carLicenceListData = [NSJSONSerialization dataWithJSONObject:carLicenceList options:NSJSONWritingPrettyPrinted error:nil];
    NSString *carLicenceListStr = [[NSString alloc] initWithData:carLicenceListData encoding:NSUTF8StringEncoding];
    [self.params setValue:carLicenceListStr forKey:@"carLicenceList"];
}

@end
复制代码

使用json方式发送数据到后台: 重写requestSerializerType方法,返回YTKRequestSerializerTypeJSON;然后requestArgument方法直接返回对象即可,如下:

@implementation SCCarParkUpdateCarRelationAPI

- (NSString *)requestUrl
{
    return [NSString stringWithFormat:@"carParkApplication/%@/updateCarRelation", self.orderId];
}

- (YTKRequestMethod)requestMethod
{
    return YTKRequestMethodPOST;
}

- (id)requestArgument
{
    return self.carLicenceList;
}

- (YTKRequestSerializerType)requestSerializerType
{
    return YTKRequestSerializerTypeJSON;
}
复制代码

需要注意的是:

requestArgument方法必须返回能转化成json的对象,要求如下:

顶层对象必须是NSArray或者NSDictionary

所有的对象必须是NSString、NSNumber、NSArray、NSDictionary、NSNull的实例

所有NSDictionary的key必须是NSString类型

数字对象不能是非数值或无穷

还有一点,如果使用MJExtension中的mj_jsonObject把对象转换成json对象时,必须保证该对象不遵守任何协议,不然转换是不成功的,issue请见:github.com/CoderMJLee/…

其它注意事项:

其它注意事项:

1.application/json可使用的http方法有post/put/delete。

get操作没有body部分,只能以key/value形式传递参数拼接在url中

post/put/delete有body部分,与服务器传递信息,都放在body中

2.是否使用application/json方式进行传值,需要与后台约定好

3.可对单个接口使用application/json方式进行传值,不影响到其它的接口

4.当application/json方式进行传值时,后台框架上使用了@RequestBody注解,读取请求body里面的值直接映射成参数,框架完成了这个事。

转载于:https://juejin.im/post/5c6baff5f265da2d89632474

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值