使用 spring boot Twilio Api 在 post 主体中缺少必需的参数 To

Missing required parameter To in the post body in react js axios using spring boot Twilio Api

我在执行 spring boot post Twilio Api 时遇到问题 .. Api 在通过 spring boot.But 执行时工作正常,当我使用 axios 将 API 集成到我的 React js 应用程序中时 “post 主体中缺少必需的参数 To " 发生错误。 我的 spring boot Twilio sendOtpCode 看起来像这样,并且 api 上的这个方法在 spring boot:

中使用 Swagger 完全正常
 @Override
    public ResponseEntity<?> sendOtpCode(TwilioSendDto twilioSendDto) {
        Twilio.init(accountSid,authToken);
        Verification verification=Verification.creator("VAXXXXXXXXXXXXXXXX",twilioSendDto.getPhoneNumber(),"sms").create();

        return ResponseEntity.status(HttpStatus.OK).body(verification.getStatus());


    }

我的反应代码如下所示:

 sendOtpCode(phoneNumber,message){
    console.log("phone number", phoneNumber);
    return axios.post("http://localhost:8080/twilio",{
      method: 'POST',
    headers: {
      'content-type': 'application/json',
    },
      data:phoneNumber,
 
    
    }
   
    );
AuthService.sendOtpCode(this.state.contactno).then(response =>{
            this.setState({
              message: response.data.message,
              successful: true
            });

我听说过查询字符串的概念,但这对我也没有帮助。

  sendOtpCode(phoneNumber,message){
    console.log("phone number", phoneNumber);
    return axios.post("http://localhost:8080/twilio",{
      method: 'POST',
  
      data:qs.stringify(phoneNumber),
      headers: {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
      }
    
    }
   
    );
    

  }

TwilioSendDto class

package com.saptasoch.ecommerce.model.dto.twilioDto;

public class TwilioSendDto {
    private String phoneNumber;

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

Twilio 控制器:

ackage com.saptasoch.ecommerce.controller;

import com.saptasoch.ecommerce.model.dto.twilioDto.TwilioMessageDto;
import com.saptasoch.ecommerce.model.dto.twilioDto.TwilioSendDto;
import com.saptasoch.ecommerce.model.dto.twilioDto.TwilioVerifyDto;
import com.saptasoch.ecommerce.service.twilioService.TwilioService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin(origins = "*", maxAge = 3600)
@RequestMapping("/twilio")
@Api(value = "/twilio",tags = "twilio", description = "Twilio service")
public class TwilioController {

    @Autowired
    TwilioService twilioService;

    @PostMapping
    ResponseEntity<?> sendOtpCode(@RequestBody TwilioSendDto twilioSendDto){
        return twilioService.sendOtpCode(twilioSendDto);
    }

   
}

您传递给 API 的请求正文格式不正确。

axios.post("http://localhost:8080/twilio", {
        method: 'POST',
        headers: {
            'content-type': 'application/json',
        },
        data: {
            phoneNumber: phoneNumber
        }});

data 应该是一个 JSON 代表 TwilioSendDto class.

这解决了我的问题。

 sendOtpCode(phoneNumber) {
    return axios
      .post("http://localhost:8080/twilio", {
        phoneNumber
        
      })
      
  }

我错误地添加了 headers。