S. *_*sif 3 json http dart flutter
在颤振项目中,我想用 JSON 正文执行DELETE请求。但是每当我尝试使用 http.delete 方法时,它都会向我展示 - 未定义命名参数“body”。
这是我的 API 删除请求的示例 -
url: 'BASE_URL'+注释/删除;
标题:
Content-Type : 'application/json',
token: 'my token',
jwt: ' my jwt'
Run Code Online (Sandbox Code Playgroud)
身体:
{
"id":"4"
}
Run Code Online (Sandbox Code Playgroud)
回复:
状态:“已删除”
因此,我需要使用上面提到的以下正文和标头发出有关 DELETE 请求,并且从 JSON 响应中我需要将状态值保存在字符串中。在这里,我需要有关代码的帮助来发出此删除请求。
请告知以上述方式发出 DELETE 请求并获得响应的整个过程。
Roi*_*nir 10
您可以使用 http 包中的请求:
import 'package:http/http.dart' as http;
import 'dart:convert';
Future<String> deleteWithBodyExample() async {
final baseUrl = "baseUrl";
final url = Uri.parse(baseUrl + "notes/delete");
final request = http.Request("DELETE", url);
request.headers.addAll(<String, String>{
"Accept": "application/json",
"token": "my token",
"jwt" : "my jwt"
});
request.body = jsonEncode({"id": 4});
final response = await request.send();
if (response.statusCode != 200)
return Future.error("error: status code ${response.statusCode}");
return await response.stream.bytesToString();
}
Run Code Online (Sandbox Code Playgroud)
简短回答:
http 删除请求不支持正文。通常,您只需在 url 中使用标识符来标识要删除的对象,如下所示:
删除 api.com/entity/1234
1234 是对象的 ID。
长答案:
在您的情况下,您想向该 url 发出 POST 请求。
有一个 dart 包为 http 请求提供了一些帮助器类。
Github:https: //github.com/Ephenodrom/Dart-Basic-Utils 安装它:
dependencies:
basic_utils: ^1.4.0
Run Code Online (Sandbox Code Playgroud)
用法
dependencies:
basic_utils: ^1.4.0
Run Code Online (Sandbox Code Playgroud)
附加信息 :
这些都是来自 HttpUtils 类的方法。
Map<String, String> headers = {
"Accept": "application/json",
"token": "my-token",
"jwt" : "my-jwt"
};
String URL = BASE_URL+"notes/delete" ;
String body = "{\"id\":\"4\"}"
Map<String, dynamic> dataAsJson = await HttpUtils.postForJson(url,body,
headers: headers);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5480 次 |
| 最近记录: |