我们可以在春季启动时在GET请求中传递对象吗?

时间:2020-03-02 08:57:53

标签: spring-boot get

当我将GET请求中的主体传递给以下api时会抛出400错误的请求。如果我通过Feign客户端未找到其抛出方法,则它是在内部将GET reuest转换为POST请求,请问你能提出什么建议吗?有什么可能的方法?除了将请求更改为POST

Api

@GetMapping("/users")
    @ApiOperation(value = "Retrieve users by role names list", notes = "Retrieves users by role name or role names passed in the list")
    @ApiResponses(value = { @ApiResponse(code = 404, message = "ROLE_NOT_FOUND") })
    public PagedResources<Resource<UserResponse>> retrieveUsersByRoleNames(@RequestBody RoleNameRequest roleNameRequest,
                                                                           @RequestParam(name = "includeLocked", required = false) Boolean locked,
                                                                           @RequestParam(name = "excludeUserId", required = false) String userId,
                                                                           @RequestParam(name = "includeDeleted", required = false) Boolean isDeleted,
                                                                           Pageable page,
                                                                           PagedResourcesAssembler<UserResponse> pagedAssembler) {

        Subscription subscription = serviceUtility.fetchSubscription();
        Page<UserResponse> pageUserResponse = roleService.findAllByRoleNames(roleNameRequest, locked, isDeleted, userId, subscription,page)
                .map(userAttribute -> ModelConverter.modelResponse(userAttribute, true));
        log.info("pageUserResponse : " + pageUserResponse);
        log.info("pageUserResponse.getTotalElements() : " + pageUserResponse.getTotalElements());
        log.info("page details size for roleNames list: " + pageUserResponse.getContent().size());
        log.info("page details values for roleNames list: " + pageUserResponse.getContent().toString());
        return pagedAssembler.toResource(pageUserResponse);
    }

请求

    RoleNameRequest roleNameRequest = new RoleNameRequest();
                    roleNameRequest.setRoleNames(identity.getPrimaryRoles());
                    List<UserResponseWithWorkload> usersWithWorkload = null;
                    try {
                        log.info("Pager Details : " + pageable.toString());
                        log.info("subscriptionId : " + subscriptionId);     
  causing exception ->  resources = securityServiceFeignClient.retrieveUsersByMultipleRoles(roleNameRequest,
                                subscriptionId, pageable.getPageNumber(), pageable.getPageSize(),userId);
                        usersWithWorkload = getUsersWithWorkload(resources.getContent().toArray(),
                                workload, identity.getActivityId(), identity.getAssignmentMode());
                        log.info(" Resource from security service : " + resources.getContent().toString());
                        log.info(" Resource size from security service : " + resources.getContent().size());
                        log.info(" Resource array from security service : " + resources.getContent().toArray());
                    } catch (Exception e) {
                        log.error(e.getMessage(), e);
                    }

1 个答案:

答案 0 :(得分:0)

尝试使用 @ModelAttribute 批注

@ModelAttribute("myObject") MyObject myObject