如何在颤动的端点调用中正确放置参数?

Posted

技术标签:

【中文标题】如何在颤动的端点调用中正确放置参数?【英文标题】:how to put correctly a parameter in an endpoint call with flutter? 【发布时间】:2020-12-25 08:00:48 【问题描述】:

我想在通过 Spring Boot 完成的后端 API 中使用端点。端点包括通过电子邮件发送 OTP 代码。端点在我测试时工作正常,但我在我的颤振应用程序中给他打电话,我有这个错误:Required String is not present 这是端点代码的一部分:

        @ApiImplicitParams(@ApiImplicitParam(name = "Authorization", 
        value = "Bearer bcryptjwttoken", paramType = 
         "header",required=true),@ApiImplicitParam(name = "Content-Type", 
         value = "application/json", paramType = 
         "header",required=true),
        @ApiImplicitParam(name = "Accept", value = "application/json", 
        paramType = "header",required=true)
         )
       @PostMapping( "/otp/request/email")
       public  ResponseEntity<Object> requestOtpPassword(@RequestParam String 
       email) throws AbysterpubFunctionalException 
         try 
          Utilisateur out = userService.requestOtpPassword(email);
         System.out.println("ramses");
         return ResponseEntity.ok(out);
           catch( AbysterpubFunctionalException afe) 
           return ResponseEntity
                .status(HttpStatus.BAD_REQUEST)
                .body(new ErrorMessage(afe.getMessage()));

         
          catch (Exception ex) 
                return ResponseEntity
                .status(HttpStatus.INTERNAL_SERVER_ERROR)
                .body(new ErrorMessage(ex.getMessage()));          
           

          

这是我尝试调用端点的颤振代码:

           Future<void> requestOtp(String email) 
          RestClient.getAuthToken().then((String token) 
           Map<String, dynamic> postData = 
          "email": email,
           ;
          RestClient.procesPostRequest("user/otp/request/$email", postData, 
         token)
         .then((response) 
         print(response);

        if (response == 200) 
        isOTPsent = true;
         else 
        isOTPsent = false;
        
       );
       ).catchError((onError) 
       print('$onError');
       return Future.value('error');
      );
      

          static Future<int> procesPostRequest(String path, Map<String, 
      dynamic> postData,String 
           token) 
        Map<String, String> headers = RestClient.getHeaders(token);

       return http.post("$WS_URL/$path", body: json.encode(postData), 
       headers: headers)
      .then((http.Response response) 
       if (response.statusCode != 200) 
       print(
        "Error while processing post request \n 
       $WSErrorHandler.fromJson(json.decode(response.body)).toJson()");
        
       return response.statusCode;
       );
       

【问题讨论】:

【参考方案1】:

您在 HTTP 正文中发送 email 参数,但 Spring Boot API 期望它作为 URL 中的查询参数。这里可以看到如何使用 Flutter http 客户端发送查询参数:How do you add query parameters to a Dart http request?

【讨论】:

以上是关于如何在颤动的端点调用中正确放置参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中快速访问相机帧

如何在颤动的屏幕底部放置一行

如何在C#中调用的存储过程正确插入数据而不提供所有可选参数?

如何从浏览器仅调用 RESTful 端点?

当我在谷歌地图上标记时如何获取地址的所有详细信息。然后它将在颤动中填充文本框

如何在颤动中绘制一个一侧为半圆的矩形?