我有一个 Rest API 成功运行,并且可以将 curl 发布为:
curl -X POST "{{baseURL}}/api/auth/login" -H "accept: application/json" -H "Content-Type: application/json-patch+json" -d "{ \"nick\": \"string"\", \"password\": \"string\"}"
Run Code Online (Sandbox Code Playgroud)
我的愿望是编写一个代码来完成上述命令的确切工作,我的意思是如何以正确的方式解码/编码东西。这是我到目前为止得到的:
Future<http.Response> postRequest (String nick, String password) async {
var url ='{{baseURL}}/api/auth/login';
var body = jsonEncode({ "nick": "$nick", "password": "$password"});
print("Body: " + body);
http.post(url,
headers: {"accept": "application/json","Content-Type": "application/json-
patch+json"},
body: body
).then((http.Response response) {
});
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Ric*_*eap 10
无需then在async函数内部使用- 使用它通常更容易且更具可读性await。我假设您真的不想返回Response并将其留给调用者来处理。由于您的接受设置为 JSON,您也可以立即解码响应并返回已解析的树(或其中的某些部分) - 但只是一个建议。
(我已经更正了一些样式和格式。)
尝试这个:
Future<Map<String, dynamic>> postRequest(String nick, String password) async {
// todo - fix baseUrl
var url = '{{baseURL}}/api/auth/login';
var body = json.encode({
'nick': nick,
'password': password,
});
print('Body: $body');
var response = await http.post(
url,
headers: {
'accept': 'application/json',
'Content-Type': 'application/json-patch+json',
},
body: body,
);
// todo - handle non-200 status code, etc
return json.decode(response.body);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5568 次 |
| 最近记录: |