引言
在spring boot中,api接口参数可以通过多种方式获取,具体取决于你定义的api接口参数类型(如路径参数、查询参数、请求体参数、请求头等)。以下是一些常见的参数获取方式以及对应的java样例代码:
1.路径参数(path variable)
使用@pathvariable
注解从url路径中获取参数。
@restcontroller @requestmapping("/users") public class usercontroller { @getmapping("/{id}") public responseentity<string> getuserbyid(@pathvariable long id) { // 处理逻辑 return responseentity.ok("user with id: " + id); } }
2.查询参数(query parameter)
使用@requestparam
注解从url查询字符串中获取参数。
@restcontroller @requestmapping("/users") public class usercontroller { @getmapping("/search") public responseentity<string> searchusers(@requestparam string name) { // 处理逻辑 return responseentity.ok("searching for user with name: " + name); } // 也可以设置默认值 @getmapping("/searchwithdefault") public responseentity<string> searchuserswithdefault(@requestparam(defaultvalue = "john") string name) { // 处理逻辑 return responseentity.ok("searching for user with name: " + name); } }
3.请求体参数(request body)
使用@requestbody
注解从http请求体中获取参数,通常用于post或put请求。
@restcontroller @requestmapping("/users") public class usercontroller { @postmapping("/") public responseentity<string> createuser(@requestbody user user) { // 处理逻辑 return responseentity.ok("user created with name: " + user.getname()); } // 假设user类如下 static class user { private string name; // getters and setters } }
4.请求头参数(request header)
通常不直接使用注解来获取请求头参数,但可以通过httpservletrequest
对象或@requestheader
注解来获取。
使用@requestheader
注解:
@restcontroller @requestmapping("/users") public class usercontroller { @getmapping("/") public responseentity<string> getusers(@requestheader("authorization") string authtoken) { // 处理逻辑 return responseentity.ok("authorization token: " + authtoken); } }
使用httpservletrequest
对象:
@restcontroller @requestmapping("/users") public class usercontroller { @getmapping("/") public responseentity<string> getusers(httpservletrequest request) { string authtoken = request.getheader("authorization"); // 处理逻辑 return responseentity.ok("authorization token from httpservletrequest: " + authtoken); } }
5.@cookievalue
当我们需要与客户端保持有状态的交互时,就需要用到cookie。此时,服务端读取cookie数据的时候,就可以像下面这样用@cookievalue
来读取cookie中的sessionid
数据。
@getmapping("/user") @responsebody() public list<user> getuserlist(@cookievalue(name = "sessionid") string sessionid) { return userrepo.findall(); }
6.@matrixvariable
这个我们用的并不是很多,但一些国外系统有提供这类api参数,这种api的参数通过;分割。
比如:这个请求/books/reviews;isbn=1234;topn=5; 就可以如下面这样,使用@matrixvariable来加载url中用;分割的参数。
@getmapping("/books/reviews") @responsebody() public list<bookreview> getbookreviews( @matrixvariable string isbn, @matrixvariable integer topn) { return bookreviewslogic.gettopnreviewsbyisbn(isbn, topn); }
7.表单数据(form data)
对于post请求中的表单数据,通常可以使用@modelattribute或@requestparam来获取。但如果表单数据作为请求体发送(content-type: application/x-www-form-urlencoded),则可以直接使用@requestparam。如果表单数据是json格式,则应使用@requestbody。
8.servlet api的其他部分
你还可以使用httpservletresponse、httpsession等servlet api的其他部分来处理请求和响应。但在spring boot中,通常推荐使用spring mvc提供的高级抽象来简化开发。
注:为了正确解析请求体中的json数据,需要在spring boot项目中添加适当的json库(如jackson),并且确保请求的content-type设置为application/json。
以上就是springboot中api接口参数获取方式小结的详细内容,更多关于springboot api接口参数的资料请关注代码网其它相关文章!
发表评论