背景:
使用vue+axios方式代替ajax后向后台发送数据出现问题了,controller获取不到数据。然后查、找、查、找中似乎找到一些门道。以下列出总结性的东西来记录自己的思考成果,仅供参考,不保证正确性,欢迎指正。
① get方式的请求是没有请求体的。但是get有query string parameter 这就是url?之后的一串东西。post请求发现了两种请求体。一种是FromData形式的请求体,一种是request payload形式的。这个可以F12查看network详细。
② post请求体是通过请求头中的Content-Type来区分的:formData形式的Content-Type为application/x-www-form-urlencoded ;而request payload形式的请求体Content-Type为application/json或multipart/form-data 。
③ 使用@RequestBody注解接收request payload形式的请求体参数;使用@RequestParam注解接收formData形式的请求体参数。
④ 使用axios发送post请求时,使用序列化工具Qs.stringify()对data进行序列化。axios可以自动转换请求体形式。
⑤ 查询的时候,我是使用POST方式的request payload形式发送请求,后台使用@RequestBody注解进行接收。映射成Page对象或者直接map对象。
⑥ 单个删除的时候,使用DELETE方式。例如 user/del/{id}。然后后台用@PathVariable注解进行接收。
⑦ 批量删除的时候,使用DELETE方式。例如user/dels/{ids}。这里的ids是用逗号分隔成的字符串。后台用@PathVariable注解接收映射成List<String> ids形式的数据。