SpringBoot接口传参方式

Posted csdnzh365

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot接口传参方式相关的知识,希望对你有一定的参考价值。

常见GET请求和POST请求的区别

1.get请求无消息体,只能携带少量数据,且不安全

post请求有消息体,可以携带大量数据,且安全

2.携带数据的方式:

get请求将数据放在url地址中

post请求将数据放在消息体body中

传参方式

get方式---params

传参格式:?号传参,在地址栏上加参数

http://host:port/path?参数名=参数值

post方式---body常见的Content-Type

application/json

application/json是POST请求以JSON的格式向服务请求发起请求或者请求返回JSON格式的响应内容,服务端接受到数据后对JSON进行解析拿到所需要的参数。

默认的数据格式是json格式: "name": "Michael"

application/x-www-form-urlencoded

application/x-www-form-urlencoded主要用于表单形式的POST请求中,如普通的表单提交,或者js发包,默认都是通过这种方式。

multipart/form-data

multipart/form-data是使用POST请求上传文件,如果上传照片,文件等,由于很多情况下都会有批量上传,为了区分不同的数据,multipart/form-data的类型有boundary参数进行分割,对上传文件请求抓包。

Content-Typeapplication/x-www-form-urlencoded或者 multipart/form-data时,默认的数格式是a=123&b=123&c=123
用get提交,和post提交是一样的,数据格式都是这样,get和post的区别是,get显示地址栏中,post提交是不显示的,相对于get来说,post这种提交方式更加安全

地址栏传参

直接通过/在地址上拼接参数值,这种方式不需要在地址栏上写参数名,后端只需要知道他在地址的哪个位置传的参数就可以拿到值

http://host:port/path/参数值

接收参数

@PathVariable

作用在形参列表上,接受参数类型:地址栏传参

@RequestMapping(value="/addUser/username/password")
public void addUser(@PathVariable String username, 
                        @PathVariable String password) 
    System.out.println("username is:"+username);
    System.out.println("password is:"+password);

此时测试访问路径: http://127.0.0.1:8883/addUser4/xiadewang/123456,自动将URL中模板变量username和password绑定到通过@PathVariable注解的同名参数上

注意这里的参数个数一定要保持相同,否则会报404的错误。

@RequestParam

作用在形参列表上,接受参数类型:

params

body的Content-Type为application/x-www-form-urlencoded或者multipart/form-data

@RequestMapping(value="/addUser")
public void addUser(@RequestParam("username") String username,
                        @RequestParam("password") String password) 
    System.out.println("username is:"+username);
    System.out.println("password is:"+password);

@RequestBody

作用在形参列表上,接受参数类型:

body的Content-Type为application/json、application/xml

@RequestMapping(value="/addUser")
public void addUser(@RequestBody User user) 
    System.out.println("username is:"+user.getUsername());
    System.out.println("password is:"+user.getPassword());

HttpServletRequest

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中。

常用的方法和操作:

1.获得客户端信息

getRequestURL--返回客户端发出请求时的完整URL。

getRequestURI--返回请求行中的资源名部分,去掉主机名的部分。

getRemoteAddr--返回发出请求的客户机的IP地址

getRemoteHost--返回发出请求的客户机的完整主机名

getRemotePort--返回客户机所使用的端口号

getLocalAddr--返回WEB服务器的IP地址。

getLocalName--返回WEB服务器的主机名

getMethod--返回客户端请求方式,如GET,POST

2.获得请求头

getHead(name)

getHeaders(String name)

getHeaderNames

3.获得请求参数(客户端提交的数据)

getParameter(name)--获得客户端传送给服务器的参数值

getParameterValues(String name)

getParameterNames

getParameterMap

@RequestMapping("/addUser")
public String addUser(HttpServletRequest request) 
    String username=request.getParameter("username");
    String password=request.getParameter("password");

    return "success";

返回参数

@ResponseBody

用于后台返回数据,将java对象转为json格式的数据。

返回结果不会被解析为跳转路径,会直接返回json数据。

作用在方法上、类上。

@ResponseBody
@RequestMapping("/getUser")
public User getUser(@RequestParam("username") String username) 
    User user = userService.getUser(name);
    return user;

HttpServletResponse

HttpServletResponse则是对服务器的响应对象。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。

常用的方法

addCookie(Cookie cookie) --向客户端写入Cookie

addHeader(java.lang.String name, java.lang.String value) --写入给定的响应头

encodeURL(java.lang.Stringurl) --默认cookie中包含Session ID,如果客户端不支持 Cookie,就在参数 url 中加入 Session ID 信息,可以解决用户禁用cookie的问题。

setStatus(intsc) --设置响应的状态码。

以上是关于SpringBoot接口传参方式的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot接口传参方式

重学SpringBoot系列之RestFul接口及常用注解

Springboot security oauth2 jwt实现权限控制,实现微服务获取当前用户信息

Springboot 框架实现rest接口风格

SpringBoot定义优雅全局统一Restful API 响应框架三

SpringBoot 项目配置 Swagger 接口api 搭建 REST