如果我不传递api参数,网址就会更改

时间:2019-10-12 11:23:08

标签: spring spring-boot

如果我不通过搜索参数,URL会更改我不想要的内容,我有一个用于搜索操作以及获取操作的通用API。

例如: 如果传递了搜索参数: 本地主机:8080 / api / search?name = harmeet

如果未传递搜索参数: 本地主机:8080 / api / search

无论我是否传递参数,我想要的URL都不会更改

例如如果我不传递参数,则网址应为: 本地主机:8080 / api / search?name =''

该代码已使用Spring Boot编写

2 个答案:

答案 0 :(得分:0)

URL的调用取决于客户端而不是服务器端。如果在客户端未传递参数值时始终希望它为某值或“”,则可以将控制器方法定义为:

@GetMapping("/api/search")
public Object getName(@Requestparam(value="name",required=false,defaultValue="")String name){
// your logic here
// value of 'name' variable will "" if nothing is passed
}

只要在URL调用中未提供参数,只需将必填字段设置为false,并使用defaultValue字段设置要设置的任何默认值即可。

答案 1 :(得分:0)

据我了解,您想创建处理两个API调用的API。

例如

http://localhost:8080/search

http://localhost:8080/search?name=hermeet

我认为您已经在后端创建了API ...对!!!

因此,逻辑上没有任何问题,但是默认情况下需要在方法中定义的参数。

不允许您传递null或空值。

您只需要在两种情况下都允许使用参数即可。 按照以下方式,

  
      
  1. 可选<'Parameter_Type'>参数名称
  2.   
  3. @RequestParam(value =“ parameter_name”,required = false)字符串变量
  4.   

示例:

@GetMapping("/search")
public List<Entity> getSearchResult(@RequestParam(value = "parameter_name", required = false) String variable) {
   if(variable!=null) { 
      // Get Data based on condition.
   } else {
      // Get All Data
   }
}

@GetMapping("/search")
public List<Entity> getSearchResult(@RequestParam("parameter_name") Optinal<String> variable) {
   if(variable.isPresent()) { 
      // Get Data based on condition.
   } else {
      // Get All Data
   }
}