好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Springboot PostMapping无法获取数据问题及解决

PostMapping无法获取数据问题

在使用SpringBoot的PostMapping注解的时候,发现无法获取数据(get方法可行),经过一番查证,发现需要添加新的注解

举例如下

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

    //接受单个参数,使用RequestParam,并且添加上name属性,保证前后端的参数名称一致

 

    @PostMapping (value = "/users" )

    public RestfulResponse postUser( @RequestParam ( "id" ) Integer id,         @RequestParam ( "username" ) String username, @RequestParam ( "password" ) String password) {

        User user = new User(id, username, password);

        //User user = new User(1,"tom","123123");

        System.out.println(id + "----" + username);

            restfulResponse = new RestfulResponse( true , 200 , "查询成功" , null );

        return restfulResponse;

    }

    //接受一个实体类,要使用RequestBody 注解

    @PostMapping (value = "/getuser" )

    public RestfulResponse postUser1( @RequestBody User user) {

        restfulResponse = new RestfulResponse( true , 200 , "查询成功" , user);

        return restfulResponse;

    }

Springboot之PostMapping 

@PostMapping

映射一个POST请求

Spring MVC新特性

提供了对Restful风格的支持

?

1

2

3

@PostMapping (value = "/user/login" )

//等价于

@RequestMapping (value = "/user/login" ,method = RequestMethod.POST)

扩展

@GetMapping ,处理get请求 @PostMapping ,处理post请求 @PutMapping ,处理put请求 @DeleteMapping ,处理delete请求

@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

属性

value :指定请求的实际地址 method :指定方法类型,get、post、put、delete等 consumes :指定处理请求的提交内容类型,如application/json, text/html; produces : 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回; params : 指定request中必须包含某些参数值是,才让该方法处理。 headers : 指定request中必须包含某些指定的header值,才能让该方法处理请求。

value/method示例

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

@Controller

@RequestMapping ( "/appointments" )

public class AppointmentsController {

    private AppointmentBook appointmentBook;

    

    @Autowired

    public AppointmentsController(AppointmentBook appointmentBook) {

        this .appointmentBook = appointmentBook;

    }

    @RequestMapping (method = RequestMethod.GET)

    public Map<String, Appointment> get() {

        return appointmentBook.getAppointmentsForToday();

    }

    @RequestMapping (value= "/{day}" , method = RequestMethod.GET)

    public Map<String, Appointment> getForDay( @PathVariable @DateTimeFormat (iso=ISO.DATE) Date day, Model model) {

        return appointmentBook.getAppointmentsForDay(day);

    }

    @RequestMapping (value= "/new" , method = RequestMethod.GET)

    public AppointmentForm getNewForm() {

        return new AppointmentForm();

    }

    @RequestMapping (method = RequestMethod.POST)

    public String add( @Valid AppointmentForm appointment, BindingResult result) {

        if (result.hasErrors()) {

            return "appointments/new" ;

        }

        appointmentBook.addAppointment(appointment);

        return "redirect:/appointments" ;

    }

}

value的uri值为以下三类:

A) 可以指定为普通的具体值;

B) 可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);

C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);

?

1

2

3

4

5

6

@RequestMapping (value= "/owners/{ownerId}" , method=RequestMethod.GET)

public String findOwner( @PathVariable String ownerId, Model model) {

   Owner owner = ownerService.findOwner(ownerId);  

   model.addAttribute( "owner" , owner);  

   return "displayOwner" ; 

}

?

1

2

3

4

5

@RequestMapping ( "/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}" )

   public void handle( @PathVariable String version, @PathVariable String extension) {    

    // ...

   }

}

cousumes的样例:

?

1

2

3

4

5

@Controller

@RequestMapping (value = "/pets" , method = RequestMethod.POST, consumes= "application/json" )

public void addPet( @RequestBody Pet pet, Model model) {    

    // implementation omitted

}

params的样例:

?

1

2

3

4

5

6

7

8

@Controller

@RequestMapping ( "/owners/{ownerId}" )

public class RelativePathUriTemplateController {

   @RequestMapping (value = "/pets/{petId}" , method = RequestMethod.GET, params= "myParam=myValue" )

   public void findPet( @PathVariable String ownerId, @PathVariable String petId, Model model) {    

    // implementation omitted

   }

}

headers的样例:

?

1

2

3

4

5

6

7

8

@Controller

@RequestMapping ( "/owners/{ownerId}" )

public class RelativePathUriTemplateController {

@RequestMapping (value = "/pets" , method = RequestMethod.GET, headers= "Referer=http://HdhCmsTestifeng测试数据/" )

   public void findPet( @PathVariable String ownerId, @PathVariable String petId, Model model) {    

    // implementation omitted

   }

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/weixin_42981803/article/details/107066650

查看更多关于Springboot PostMapping无法获取数据问题及解决的详细内容...

  阅读:80次