Введите параметры для удаления - флаттер - PullRequest
0 голосов
/ 06 марта 2019

Я видел, что документация вокруг него показывает только, как удалить, используя url, но не показывает, как передать параметры, чтобы удалить только этот конкретный элемент в массиве json?

Вызов функции удаления:

  main() {
    HttpClient httpClient = new HttpClient();
    httpClient.delete( '35.186.145.243', 8080, '/users');
    httpClient.close();
    return "Success";
  }

Параметры, которые необходимо передать:

  1. Строка user_id
  2. Строка price

массив JSON:

{
    "user_id": "user2",
    "price": "$34"
}

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

У меня недавно была та же проблема, и единственный способ ее решить - использовать http-клиент:

Future<String> apiRequest() async {
    Map<String, dynamic> Object;
      Object= {
             'price': '$34',
             'user_id': 'user2'
              };
    final client = http.Client();
    try {
      final response = await client.send(http.Request("DELETE", Uri.parse("35.186.145.243:8080"))
        ..headers["Content-Type"] = "application/json"
        ..body = json.encode(Object));
    } catch (e) {
      print(e);
    } finally {
      client.close();
    }
  }
0 голосов
/ 06 марта 2019

Найден ответ с помощью HTTP-запроса клиента при использовании метода delete on body!

main() async {
    String url = "http://35.186.145.243:8080/users";

    Map map = {
      'price': '$34',
      'user_id': 'user2'
    };

    print(await apiRequest(url, map));
  }

  Future<String> apiRequest(String url, Map jsonMap) async {
    HttpClient httpClient = new HttpClient();
    HttpClientRequest request = await httpClient.deleteUrl(Uri.parse(url));
    request.headers.set('content-type', 'application/json');
    request.add(utf8.encode(json.encode(jsonMap)));

    HttpClientResponse response = await request.close();
    String statusCode = response.statusCode.toString();
    String reply = await response.transform(utf8.decoder).join();
    responseMessage = statusCode;

    print(statusCode);

    httpClient.close();
    return reply;
  }
...