首页 > 解决方案 > 我们可以在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);
                    }

标签: spring-bootget

解决方案


尝试使用@ModelAttribute注释

@ModelAttribute("myObject") MyObject myObject

推荐阅读