用函数计算出来的结果怎么总是显示#VALUE!怎么解决(excel中函数计算后显示不出结果怎么办)
867
2022-05-30
http请求中的参数
本文以前端框架jquery.ajax和后端标准JAX-RS、SpringMVC为例,介绍如何在前后端通过http request消息传递参数。
http请求消息分为消息头header和消息体body。放在body中的数据只有一种,其余都是放在header中的不同位置。
HTTP请求可以文本显示,各参数以回车分割。
如:
一般根据参数在http中的位置的不同,置值和取值的方法也不一样。下面将分别介绍。
header
数据在header中,并单独占header的一个属性。header中除了HTTP标准字段,也可以自己添加非标准字段。
前端:
$.ajax({
url: "/getHeader",
type: "GET",
header: {
token: "11111"
}
});
后端:
JAX-RS
@GET
@Path("/getHeader")
public String getHeader(@HeaderParam(HttpHeaders.token) String token) {}
SpringMVC
@GET
@Path("/getHeader")
public String getHeader(@RequestHeader("token") String token) {}
扩展
HTTP头(Request)中的标准字段如下(摘自维基百科)
cookie
数据在header的cookie中,cookie是发送HTTP请求时客户端会自动附上的数据。
前端:
$.ajax({
url: "/getCookie",
type: "GET"
})
cookie中的数据
sessionId=415A4AC178C59DACE0B2C9CA727CDD84
后端:
JAX-RS
@GET
@Path("/getCookie")
public String getCookie(@CookieParam("sessionId") String sessionId) {}
SpringMVC
@GET
@Path("/getCookie")
public String getCookie(@CookieValue("sessionId") String sessionId) {}
path
数据在url中。
前端:
$.ajax({
url: "/getUserById/100/Ann",
type: "GET"
})
后端:
JAX-RS
@GET
@Path("/getUserById/{id}/{name}")
public String getUserInfoId(@PathParam("id") int id,
@PathParam("name") String name) {}
SpringMVC
@GET
@Path("/getUserById/{id}/{name}")
public String getUserInfoId(@PathVariable("id") int id,
@PathVariable("name") String name) {}
query
数据在url中,以?和&区隔。
前端:
$.ajax({
url: "/getUserByName?name=Ann",
type: "GET"
})
后端:
JAX-RS
@GET
@Path("/getUserByName")
public String getUserInfo(@DefaultValue("fei")@QueryParam("name") String name) {}
SpringMVC
@GET
@Path("/getUserByName")
public String getUserInfo(@RequestParam(value="name", required=false) String name) {}
matrix
数据在url中,以;区隔。
矩阵参数适用于特定路径元素,而查询参数作为整体应用于请求.当对多级资源和子资源进行复杂的REST风格查询时,这种情况就会发生:
http://example.com/res/categories;name=foo/objects;name=green/?page=1
前端:
$.ajax({
url: "/getMatrix;name=Ann;address=Shanghai",
type: "GET"
});
后端:
JAX-RS
@GET
@Path("/getMatrix")
public String getMatrix(@MatrixParam("name") String name,
@MatrixParam("address") String address) {}
SpringMVC
@GET
@Path("/getMatrix")
public String getMatrix(@MatrixVariable("name") String name,
@MatrixVariable("address") String address) {}
body
一个http请求只能有一个消息体(request body),因此该参数在一个请求中只有一个。
body中的数据支持多种格式,常用的有application/x-www-form-urlencoded、application/json 、application/xml等。
后端:
JAX-RS
若数据类型是form,用@FormParam 。
SpringMVC
若数据类型是form,用@RequestParam 。
若数据类型不是form,用@RequestBody 。
其他
获取上下文中的HttpServletRequest、HttpServletResponse等对象。
后端:
JAX-RS
用@Context注解。
public String demo(@Context HttpServletRequest httpServletRequest)
The object instances that it can inject are the following:
SecurityContext – Security context instance for the current HTTP request
Request – Used for setting precondition request processing
Application, Configuration, and Providers -> Provide access to the JAX-RS application, configuration, and providers instances
ResourceContext – Resource context class instances
ServletConfig – The ServletConfig instance instance
ServletContext – The ServletContext instance
HttpServletRequest – The HttpServletRequest instance for the current request
HttpServletResponse – The HttpServletResponse instance for the current request
HttpHeaders – Maintains the HTTP header keys and values
UriInfo – Query parameters and path variables from the URI called
开发者
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。