#flutter #flutter-http
Вопрос:
Есть ли какой-либо пример,на который я могу сослаться, об общем классе/методе для вызовов API flutter(GET, POST,…) в flutter? Я обработал все запросы API общим методом в react native, я не уверен, как реализовать его в flutter.
Ответ №1:
вы должны вызвать GetRequest, используя параметр url
Futurelt;Responsegt; getRequest(String url) async { Response response; try { response = await _dio.get(url, options: Options(headers: { HttpHeaders.authorizationHeader: 'Bearer $accessToken' })); print('response $response'); } on DioError catch (e) { print(e.message); throw Exception(e.message); } return response; }
вот метод post
Futurelt;Responsegt; posRequestImage(String url, data) async { try { response = await _dio.post( url, data: formData, options: Options(headers: { HttpHeaders.authorizationHeader: 'Bearer $accessToken' }), ); if (response.statusCode == 200) { return response; } print('post response $response'); } on DioError catch (e) { print(e.message); throw Exception(e.response?.statusMessage); } return response; }
Комментарии:
1. Спасибо! Не могли бы вы, пожалуйста, показать мне на принимающей стороне, должен ли я вызывать этот метод, например, Futurelt;Responsegt; res = GetRequest(uri) ?
2. о, вы можете позвонить так: окончательный ответ = ожидание _httpService.GetRequest(‘$конечная точка’); окончательные заказы = AllOrderListModel.FromJSON(response.data); возвращенные заказы;
Ответ №2:
Вы можете создать класс для его обработки. Например, это мой класс для обработки всех служб для пользовательской модели
import 'package:http/http.dart' as http; class UserService { var baseUrl = URL.devAddress; Futurelt;Usergt; getUser() async { final response = await http.get( Uri.parse(baseUrl "user/1") ); if (response.statusCode == 200) { final data = json.decode(response.body); return data } else { throw Exception("Failed"); } } }
Ответ №3:
Futurelt;voidgt; getUser(String username) async { Uri uri = Uri.parse('https://example.com'); try { Maplt;String, dynamicgt; params = new HashMap(); params['username'] = username; final response = await client.post(uri, body: jsonEncode(params), ); print("response ${response.body}"); } on FetchDataException { throw FetchDataException("No Internet connection"); }
}