新司机注册代码和老师的一样,但是发起feign请求时,客户端接收不到参数,实体类里参数值都为null

来源:3-7 小程序获取用户微信简介,实现司机注册

曹学习

2022-11-10

feign的客户端(bff-driver)

@FeignClient(value = "hxds-dr")
public interface DrServiceApi {
    @PostMapping("/driver/registerNewDriver")
    public R registerNewDriver(@RequestBody RegisterNewDriverForm form);
}
@RestController
@RequestMapping("/driver")
@Tag(name = "DriverController", description = "司机模块Web接口")
public class DriverController {
    @Resource
    private DriverService driverService;

    @PostMapping("/registerNewDriver")
    @Operation(summary = "新司机注册")
    public R registerNewDriver(@RequestBody @Valid RegisterNewDriverForm form) {
        long driverId = driverService.registerNewDriver(form);
        //在SaToken上面执行登陆,实际上就是缓存userId,然后才有资格拿到令牌
        StpUtil.login(driverId);
        //生成Token令牌字符串(已加密)
        String token = StpUtil.getTokenInfo().getTokenValue();
        return R.ok().put("token", token);
    }
}
@Service
public class DriverServiceImpl implements DriverService {

    @Resource
    private DrServiceApi drServiceApi;

    @Override
    @Transactional
    @LcnTransaction
    public long registerNewDriver(RegisterNewDriverForm form) {
        R r = drServiceApi.registerNewDriver(form);
        long userId = Convert.toLong(r.get("userId"));
        return userId;
    }
}

feign的服务端

@RestController
@RequestMapping("/driver")
@Tag(name = "DriverController", description = "司机模块Web接口")
public class DriverController {

    @Resource
    private DriverService driverService;
    
	@PostMapping("/registerNewDriver")
    @Operation(summary = "新司机注册")
    public R registerNewDriver(@Valid @RequestBody  RegisterNewDriverForm form) {
        Map param = BeanUtil.beanToMap(form);
        String userId = driverService.registerNewDriver(param);
        return R.ok().put("userId", userId);
    }
}

报错如下(服务端hxds-dr)

2022/11/10 10:29:22 ERROR 执行异常
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 3 errors
Field error in object ‘registerNewDriverForm’ on field ‘photo’: rejected value [null]; codes [NotBlank.registerNewDriverForm.photo,NotBlank.photo,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [registerNewDriverForm.photo,photo]; arguments []; default message [photo]]; default message [photo不能为空]
Field error in object ‘registerNewDriverForm’ on field ‘nickname’: rejected value [null]; codes [NotBlank.registerNewDriverForm.nickname,NotBlank.nickname,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [registerNewDriverForm.nickname,nickname]; arguments []; default message [nickname]]; default message [nickname不能为空]
Field error in object ‘registerNewDriverForm’ on field ‘code’: rejected value [null]; codes [NotBlank.registerNewDriverForm.code,NotBlank.code,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [registerNewDriverForm.code,code]; arguments []; default message [code]]; default message [code不能为空]

写回答

2回答

海风八百里

2022-12-28

我也有遇到这个错误,不知道和你的情况是否一样,我是注解引用的时候引用错了,@RequestBody应该引用

import org.springframework.web.bind.annotation.RequestBody;

引用成swagger的那个就接收不到参数了。

0
1
曹学习
真的是,万分感谢
2023-05-05
共1条回复

神思者

2022-11-10

你先给bff子系统的web方法设置断点,看一下调用司机子系统之前有没有接收到小程序提交的数据

0
4
神思者
回复
曹学习
你完全导入我的所有子系统再试一下
2022-11-15
共4条回复

多端全栈项目实战,大型商业级代驾业务全流程落地

50000+代码,300+技术点,慕课网明星讲师为你私人订制

608 学习 · 443 问题

查看课程