You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart注册接口始终返回500状态码,请求协助排查修复

解决Dart注册接口返回500错误问题

问题描述

Dart代码调用注册接口始终返回response.statusCode=500,但Postman调用该接口正常工作。相关代码如下:

完整代码

import 'dart:convert';

import 'package:try/models/user_model.dart';
import 'package:http/http.dart' as http;

class AuthService {
  String baseUrl = '10.0.2.2';

  Future<UserModel> register({
    String? name,
    String? username,
    String? email,
    String? password,
  }) async {
    var url = Uri.http(baseUrl, '/try-backend/public/api/register');
    var headers = {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
    };
    var body = jsonEncode({
      'name': name,
      'username': username,
      'email': email,
      'password': password,
    });
    http.Response response = await http.post(
      url,
      headers: headers,
      body: body,
    );
    print(response.body.toString());

    if (response.statusCode == 200) {
      var data = jsonDecode(response.body)['data'];
      print(data);
      UserModel user = UserModel.fromJson(data['user']);

      user.token = 'Bearer ' + data['access_token'];
      return user;
    } else
      throw Exception('failed' + response.statusCode.toString());
  }
}

排查与解决方案

  • 校验必填参数是否非空
    代码中所有参数都是String?可选类型,若调用register时某个后端必填参数传了null,会导致后端抛出异常返回500。可添加参数校验:

    if (name == null || username == null || email == null || password == null) {
      throw Exception('必填参数不能为空');
    }
    
  • 对齐Postman与Dart的请求头
    检查Postman中的请求头是否与Dart代码完全一致,比如Postman可能自动携带User-Agent等额外头信息,可将Postman的请求头完整复制到Dart代码中测试。

  • 解析response.body的错误详情
    你已添加print(response.body.toString());,仔细查看打印内容,后端通常会在500响应中返回具体错误堆栈或原因(如数据库报错、参数格式不匹配),根据该信息定位问题。

  • 确认URL完全匹配
    Uri.http默认使用80端口,若后端服务使用其他端口,需在baseUrl中补充端口,例如10.0.2.2:8000,确保与Postman中的请求URL完全一致。

  • 检查JSON编码格式
    打印body变量,对比Postman中的请求体,确认字段名大小写、参数格式是否与后端要求完全匹配,避免因JSON编码差异导致后端解析失败。

内容的提问来源于stack exchange,提问作者Aizen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:20:35