处理HTTP状态代码

问题描述 投票:0回答:1

我想在这方面得到您的建议。假设我想处理从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是针对异常的,在这里我只想要结果的状态码...)

api http dart
1个回答
0
投票

[如果您看一下wiki,您会发现这些代码分为几组。 1xx表示信息响应,2xx表示成功。使用switch语句,您可以检查接收到的代码属于哪个组,然后继续或抛出错误。

其他选项是添加拦截器,并在其中检查响应代码。

© www.soinside.com 2019 - 2024. All rights reserved.