package com.scgc.es.controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import java.io.Serializable;
* @author Dongping Yin
public interface BaseController<T, ID extends Serializable> {
public Object get();
public Object get(@PathVariable ID id);
public Object insert(@ModelAttribute T t);
public Object update(@ModelAttribute T t);
public Object delete(@PathVariable ID id);
BaseControllerImpl如下:
package com.scgc.es.controller.v1;
import com.scgc.es.controller.BaseController;
import lombok.NoArgsConstructor;
import java.io.Serializable;
* @description: TODO
* @author: Yin DongPing
* @create: 2020/01/02
@NoArgsConstructor
public class BaseControllerImpl<T, ID extends Serializable> implements BaseController<T, ID> {
@Override
public Object get() {
return null;
@Override
public Object get(ID id) {
return null;
@Override
public Object insert(T t) {
return null;
@Override
public Object update(T t) {
return null;
@Override
public Object delete(ID id) {
return null;
调用类InfoController如下:
package com.scgc.es.controller.v1;
import com.scgc.es.annotations.ResponseResult;
import com.scgc.es.controller.BaseController;
import com.scgc.es.model.po.Info;
import com.scgc.es.service.es.InfoEsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
* @description: ES 索引 API
* @author: Yin DongPing
* @create: 2020/01/02
@RestController
@RequestMapping("/api/v1/infos")
@Slf4j
@ResponseResult
public class InfoController extends BaseControllerImpl<Info, Integer> implements BaseController<Info, Integer> {
private final InfoEsService infoEsService;
public InfoController(InfoEsService infoEsService) {
this.infoEsService = infoEsService;
@PostMapping
public Object insert(@RequestBody Info info) {
return infoEsService.save(info);
前端用POSTMAN传递JSON请求,结果后端一直接收不到参数。
Debug之后发现只要InfoController去掉了implements BaseController<Info, Integer>这段代码就可以接受到参数了。
具体原因没有查明,后面有时间了再说。
今天抄一个接口,原始应该是传过来参数id,如果是查询所有,则id为空,如果是根据这个id来查,id就是一个32位的字符串。
今天这个错出人意料,我愿称之为羞涩的大胸肌肉男,以为躲躲藏藏我就找不到你了吗
旧代码是使用get方法请求,所以Controller入参直接写一样的名字就能接收到,但是新的接口使用的post请求方式,body里面的数据是json格式,用@requestBody接收,不用直接放String格式,入参:@RequestBody Map id,这样就可以...
原因: ApiFox中设置json格式的body参数时,变量名未遵循驼峰命名规则(类似于printEmployeePaychecks,即首字母必须小写。),所以解析时无法获取对应变量名。(接收数据的实体类中的变量命名即使非首字母小写也可以,主要是请求时携带的变量名。正常在Controller方法中使用@RequestBody + 类 对象进行参数接收,通过ApiFox对对应接口发起请求,但控制台打印内容为空。
拦截器被用来获取用户的请求日志,好处多多。一般来说,请求参数通过GET和POST的方式传递,GET请求参数通过request.getParameterMap()方法获取,POST请求参数通过request.getInputStream()方法获取。
但是,当在项目中使用拦截器获取到请求参数后,发现controller中@RequestBod...
qq_45159272 2020-12-19 http://localhost:8001/serviceedu/edu-teacher/pageTeacherCondition/[object%20MouseEvent]/2 我和你差不多 回复 赞 迷茫的21世纪的新轻年 2020-08-29 ...
第一次搭建项目开发环境,需要在项目中实现日志拦截器,用来获取用户请求参数日志,以便在后期维护中出现BUG时能够快速定位错误发生的场景。请求参数一般通过GET和POST方式进行传递,GET请求参数获取通过request.getParameterMap()获取。而POST请求参数则采用request.getInputStream()获取。
在实现中发现如果通过流获...
原因分析:
因为字段是大写的,sping框架接收参数的时候的get/set方法无法识别两个大写字母,例如:"QQ","qQ",不知道是用setQQ,还是setqQ,导致无法复制,所以传输过来的字段为空
解决方案:
1.最好注重个人书写规范,使用驼峰命名
2 在字段上使用@jsonProperty("字段名")注解来进行解.
如图所示JSON.parseObject(jsonParam),后台报空指针,
HttpClientUtil的post请求没有增加Content-type=application/json,HttpPost默认用的是application/x-www-form-urlencoded,
解决办法:
在工具类的请求头里追加:
httpPost.setHeader(“Content-type”, ContentType.APP