How to delete data using http.delete Flutter

青春壹個敷衍的年華 提交于 2021-01-29 08:36:12

问题


I'm Learning CRUD( Create,Read,Update,Delete) using rest api , I'm already GET & POST data, How to implement "http.delete()" in Flutter ?

I'm already Using this function, i can get ID for deleting data, but not deleting.

Future deleteMahasiswa(Map<String, dynamic> id) async {
    final response =
        await http.delete('${Urls.BASE_API_URL}/mahasiswa/delete?id=$id');
    return response.statusCode == 200;
  }

class Urls {
  static const BASE_API_URL = 'http://192.168.43.159/wpu-rest-server/apii/';
  static const BASE_HOST ='http://192.168.43.159/';
}

And This for View

void _deleteAction() async {
     final post = {
      "id": widget.id
    };
    bool result = await api.deleteMahasiswa(post);
    if (result) {
      _showSnackBar(context, 'Hapus ${widget.nama} Berhasil');
      debugPrint(widget.id);
    }
    else{
      _showSnackBar(context, 'Fail');
      debugPrint(widget.id);

      return null;

    }
    _refreshList();
  }

this for button onpressed

onPressed: () {
_deleteAction();
},

I'm mistake something ?

Update I'm Try change my code like this :

Future deletedDeleted(String id) async {
    final _authority = "${Urls.BASE_API_HOST}";
    final _path = "/wpu-rest-server/apii/mahasiswa/delete/$id";
    // final _params = { "id" : id };
    final httpClient = HttpClient();
    final _uri = Uri.http(_authority, _path);
    final request = await httpClient.deleteUrl(_uri);
    request.headers.set('content-type', 'application/json');
    final response = await request.close();
    final responseBody = await response.transform(utf8.decoder).join();
    debugPrint(responseBody.toString());
    debugPrint(_uri.toString());
    return responseBody;
  }

My Console show me correct URL , but have message ID Null. enter image description here


回答1:


Use this method to delete

 Future<Map<String, dynamic>> commonDel(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 reply = await response.transform(utf8.decoder).join();
     print(reply);
     httpClient.close();
     Map<String, dynamic>map = json.decode(reply);
     return map;
}


来源:https://stackoverflow.com/questions/57394495/how-to-delete-data-using-http-delete-flutter

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!