当前位置: 首页 > 知识库问答 >
问题:

我如何通过在请求中传递特定的参数来获取它们?SpringBoot API

余天宇
2023-03-14

我在努力寻找解决办法...我想知道如何获得一个指定的参数,通过请求传递它,而不必在Spring Boot API中编写每个特定的情况。

{
"id": 3,
"name": "test",
"dominio": "dom",
"altas": "6",
"bajas": "2",
"default_group": [
    {
        "idRef": 1,
        "name": "Users",
        "path": "OU=es"
    }
],
"office": [
    {
        "idRef": 1,
        "title": "Intern",
        "name": "CN=Office license",
        "path": "OU=licenseOffice"
    },
    {
        "idRef": 2,
        "title": "Specialist",
        "name": "CN=Office License F3",
        "path": "OU=LicenseGroupF"
    }
]

我不必为嵌套对象(office和default_group)这样做,只需从它们那里获取信息,传递参数的名称。

所以我想做一些类似的事情:

get-->localhost:8080/api/3/name

这将返回包含内部所有default_groups的数组。

除此之外,我想知道是否有可能为做同样事情的方法做一个PUT请求。

我不知道这能不能做到,但万一能做到,你能不能给点指导什么的...

@GetMapping("/{companiaId}/{field_name}")
public Object queryField(
        @PathVariable("companiaId") Long companiaId,
        @PathVariable("field_name") String fieldName) {
    Map<String, Function<Compania, Object>> fieldRetrievers = Map.of(
            "name", Compania::getName,
            "dominio", Compania::getDominio,
            "altas", Compania::getAltas,
            "bajas", Compania::getBajas,
            "default_group", Compania::getDefault_group,
            "office", Compania::getOffice
    );

    Compania c = companiaService.getCompaniaNotOpt(companiaId);
    Function<Compania, Object> retriever = fieldRetrievers.get(fieldName);
    return retriever.apply(c);
}

共有1个答案

梅跃
2023-03-14

我不认为这是最干净的设计,但可以创建一个映射,它按名称包含所有字段访问器:

 Map<String, Function<YourClass>> fieldRetrievers = Map.of(
   "name", YourClass::getName,
   "default_group", YourClass::getDefaultGroup,
   "office", YourClass::getOffice
 );

然后您可以在控制器中使用它(实际上是服务,但为了保持简短):

@GetMapping("/path/{field_name}")
Object queryField(@PathVariable("field_name") String fieldName) {
  YourClass c = getObject();
  Function<YourClass, Object> retriever = fieldRetrievers.get(fieldName);
  return retriever.apply(c);
}
 类似资料:
  • 我正在尝试实现我从GitHub获得的这个spring应用程序。我还在学习过程中,所以这可能是一个基本的问题。对于这个update user方法,我需要在postman正文中传递哪些参数?我在邮递员正文中写了{“id”:1,“password”:“1234”},但它向我显示了400个错误的语法错误。 在控制器

  • 当我将参数嵌入到下面的路径中时,我可以成功地传递参数 我应该使用‘参数’tabe只有当我做POST方法?我知道向JMeter传递参数是一个简单的问题,但我不能解决我的问题。

  • 当我从discord服务器收到请求时,它会发送如下内容: null 当我运行它时,终端给我&LTResponse[404&>;,这似乎是错误本身的代码,但我希望代码输出消息参数的内容 我为一个可能愚蠢的问题提前道歉。

  • 我想在点击页面底部时从数据库中检索数据。 现在,我所了解的是: URL。py 视图。py公司 index.html 基本上,它在开始时加载5项,而我试图实现的是,当我到达页面底部时,它会再加载1项。因此jQuery在控制台上工作。日志(“测试”)工作,在我的终端上显示 “获取/加载/HTTP/1.1”200 484 这也很好。 我想我搞砸了ajax不知何故。虽然我不确定。 你可能知道我是个笨蛋,但

  • 本文向大家介绍如何获取路由传过来的参数?相关面试题,主要包含被问及如何获取路由传过来的参数?时的应答技巧和注意事项,需要的朋友参考一下 如果使用方式传入的参数使用 接收 如果使用方式传入的参数使用接收 参考:路由组件传参

  • 问题内容: 如何从JavaScript请求中获取“ GET”变量? 是jQuery还是YUI!内置此功能吗? 问题答案: 所有数据均在 您必须解析字符串,例如。 只需以GET变量名作为参数调用该函数,例如。 如果变量没有值或不存在,则此函数将返回变量value或undefined