【发布时间】:2020-07-14 11:21:18
【问题描述】:
我想听听您对此的建议。 假设我想处理从 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是针对异常的,这里我只想要结果的状态码……)
【问题讨论】: