spring-boot - 我们可以在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);
}
解决方案
尝试使用@ModelAttribute注释
@ModelAttribute("myObject") MyObject myObject
推荐阅读
- c# - C#将变量添加到路径
- android - 声明一堆可绘制对象(Kotlin)的最佳方法是什么?
- javascript - 如何将文件设置为 React 状态
- typescript - 更好的 TypeScript 推断可以返回多个不同对象的函数的返回类型
- php - PHP 不在某些文件上执行,在其他文件上正确执行
- julia - 通量损失函数未按预期读取数据
- c# - c# 在 c# 中构建动态 SQL
- haskell - Haskell 解析器应该允许数字文字中的 Unicode 数字吗?
- c++ - C++ 二叉搜索树模板从函数返回节点
- linux - 如何使用 sed 或其他命令将现有字符串替换为每行的不同字符串