我想就此给您个建议。 假设我想处理从http协议中的POST或GET方法获得的错误/状态代码,我尝试实现以下方法:
class Login extends IRequest<Map<String, dynamic>> {
Login(var email, var password) {
var data = {'email': email, 'password': password};
var url = API_PREFIX + LOGIN_ENDPOINT;
var body = json.encode(data);
var headers = {
'Content-type': CONTENT_TYPE,
};
}
Future<IResponse> login(var mail, var password) async {
final response = await http.post(url, headers: headers, body: body);
switch (response.statusCode) {
case OK:
case ACCEPTED:
final responseJson = json.decode(response.body);
String key = responseJson['login_key'];
String experial = responseJson['experial'];
var token = LoginToken(key, experial);
return token;
case NOT_FOUND:
return ErrorResponse(response.statusCode.toString());
}
}
}
我正在以异步方式处理请求,然后检查响应代码,但是有很多情况可供选择,范围从200到500,这使代码非常凌乱和难看, 有什么简单的方法可以解决此问题? 我虽然有关于try / catch的信息,但是在这种情况下可以使用吗? (我知道try catch是针对异常的,这里我只想要结果的状态码...)
答案 0 :(得分:0)
如果您可以看一下wiki,那么代码将分为几组。 1xx表示信息响应,2xx成功等。 使用switch语句,您可以检查接收到的代码属于哪个组,然后继续或抛出错误。
其他选项是添加拦截器,并在其中检查响应代码。