Spring Boot接收單個(gè)String入?yún)⒌慕鉀Q方法
前言
接受參數(shù)是我們?cè)谌粘i_發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于Spring Boot接收單個(gè)String入?yún)⒅鉀Q方案的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧
場(chǎng)景:
在做接口時(shí),有的時(shí)候,接口入?yún)⒅恍枰粋€(gè)參數(shù),如果將一個(gè)參數(shù)封裝成一個(gè)對(duì)象很麻煩,故有了以下方式:
思路:
spring自帶的參數(shù)解析器貌似是不具備這個(gè)能力的,所有自定義
方式方法:
1.定義一個(gè)注解
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestSingleParam {
String value();
boolean required() default true;
String defaultValue() default "";
}
2.定義解析器
public class RequestSingleParamHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(RequestSingleParam.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
RequestSingleParam requestSingleParam = parameter.getParameterAnnotation(RequestSingleParam.class);
HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);
BufferedReader reader = request.getReader();
StringBuilder sb = new StringBuilder();
char[] buf = new char[1024];
int rd;
while ((rd = reader.read(buf)) != -1) {
sb.append(buf, 0, rd);
}
JSONObject jsonObject = JSONObject.parseObject(sb.toString());
String value = requestSingleParam.value();
return jsonObject.get(value);
}
}
3.修改Springboot啟動(dòng)類
(a.繼承WebMvcConfigurerAdapter;b.重寫addArgumentResolvers()方法)
@SpringBootApplication
@EnableWebMvc
public class SpringbootDemoApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers){
argumentResolvers.add(new RequestSingleParamHandlerMethodArgumentResolver());
super.addArgumentResolvers(argumentResolvers);
}
}
4.在Controller中應(yīng)用
調(diào)用接口方,傳參如: {“name”:"張三"},Controller中就能獲取到"張三”
@RequestMapping(value = "/test",method = RequestMethod.POST)
public void test(@RequestSingleParam(value = "name") String name){
System.out.println(name);
}
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
eclipse實(shí)現(xiàn)DSA數(shù)字簽名
這篇文章主要為大家詳細(xì)介紹了eclipse實(shí)現(xiàn)DSA數(shù)字簽名算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
Java ShardingJDBC實(shí)戰(zhàn)演練
Sharding-JDBC 采用在 JDBC 協(xié)議層擴(kuò)展分庫分表,是一個(gè)以 jar 形式提供服務(wù)的輕量級(jí)組件,其核心思路是小而美地完成最核心的事情2021-11-11
關(guān)于RestTemplate中的Get請(qǐng)求
這篇文章主要介紹了關(guān)于RestTemplate中的Get請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
解決feign接口返回泛型設(shè)置屬性為null的問題
這篇文章主要介紹了解決feign接口返回泛型設(shè)置屬性為null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
OPENCV+JAVA實(shí)現(xiàn)人臉識(shí)別
這篇文章主要為大家詳細(xì)介紹了OPENCV+JAVA實(shí)現(xiàn)人臉識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02

