问题
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