04 spring boot入门——HTTP接口的GET请求介绍

版权声明:X北辰北 https://blog.csdn.net/qq_35117024/article/details/88732307

目标

  1. @RequestMapping的使用;
  2. @GetMapping的使用。

简要说明

        本节的目标如上述所示,在本文中我们学会两个注解的使用就已经达到了本文的目的。文章后面还介绍了GET请求设置默认值、获取HTTP请求头信息等的操作,在此只是简单的列举了以下示例代码,如果读者想详细了解这部分,还需移步至官网了解。

内容

1、测试restful协议,从路径中获取字段,@RequestMapping的使用

        首先我们来介绍第一种写法,就是从请求的路径中获取参数字段值,并将它赋值给一个变量,然后返回给前端,如下代码所示:

package net.xqwexample.mavendemo02.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

//测试http协议的get请求     @ReatController表明以一个json格式的返回给前端
@RestController   
public class GetController {

	//用来定义一个保存输出的变量
	private Map<String, Object> params= new HashMap<>();
	
	/*
	 * 功能描述:测试restful协议,从路径获取字段
	 * @param cityId
	 * @param userId
	 * @return
	 * */
	@RequestMapping(path = "/{city_id}/{user_id}" , method = RequestMethod.GET)
	public Object findUser(@PathVariable("city_id") String cityId,@PathVariable("user_id") String userId) {
		params.clear();
		params.put("city_id", cityId);
		params.put("user_id", userId);
		return params;
	}
}

        上述代码的请求地址及运行结果如下所示:

2、测试@GetMapping的使用

        上述我们通过@RequestMapping这个注解来简单地介绍了一下在Get请求中它的使用方法,从上面可知,此注解使用的话需要在它的method属性中还要指定一下请求方式,如果我们不想指定的话,还有另一种写法,就是接下来要介绍的@GetMapping注解的使用,代码如下:

/*
	 * 功能描述:测试GetMapping
	 * @param from
	 * @param size
	 * @return
	 **/
	@GetMapping(value="/v1/page_user1")
	public Object pageUser(int from,int size) {
		params.clear();
		params.put("from", from);
		params.put("size", size);
		return params;
	}

        使用此注解的话请求地址的写法跟之前可就不一样了,它需要我们原封不定的在地址里写上“/v1/page_user1”,然后跟“?from=99&size=12”格式即可,如下:

3、请求参数设置默认值

        在我们开发的时候,有些请求参数是要设置默认值的,接下来我们通过代码介绍一下设置默认值的注解@RequestParam的用法:

/*
	 * 默认值
	 * @param from
	 * @param size
	 * @return
	 * */
	@GetMapping(value="/v1/page_user2")
	public Object pageUser2(@RequestParam(defaultValue="0",name="page") int from,int size) {
		params.clear();
		params.put("from", from);
		params.put("size", size);
		return params;
	}

        上述代码中还是使用了@GetMapping注解来写请求地址,但是与第二部分不同的是,这次的写法中我们通过@GetMapping来设置了请求参数的默认值。

        上述代码中page变量最终会映射到from变量上面去,所以在请求地址中书写时应该是“localhost:8080/v1/page_user2?page=22&size=88”,而不会再使用from去请求,如图:

        如果我们用from去设置请求参数或者不指定page的参数,仅仅指定size的参数的话,返回的from会有一个默认值0,如图:

 4、bean对象传参

        如果我们要传的参数很多的情况下上述几种方法是不能满足要求的,所以我们得介绍下面这种方法,首先定义一个User对象,相当于一个POJO(还不理解是什么作用),下面直接上代码吧:

User对象的代码:

package net.xqwexample.mavendemo02.domain;

//相当于定义一个POJO
public class User {

	private int age;
	private String name;
	private String photo;
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age=age;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name=name;
	}
	
	public String getPhoto() {
		return photo;
	}
	
	public void setPhoto(String photo) {
		this.photo=photo;
	}
	
	//其它的方法
}

bean对象传参的代码:

/*
	 * bean对象传参
	 * 注意:1、需要指定http头为content-type为application/json
	 * 2、使用body传输数据
	 * @param user
	 * @return
	 * */
	@RequestMapping("/v1/save_user")
	public Object saveUser(@RequestBody User user) {
		params.clear();
		params.put("user",user);
		return params;
	}

        然后我们在postman中去测试这个接口,发现它可以传参并且赋值,如下图:

 5、获取http头信息

代码:

/*
	 * 获取http头信息
	 * @param accessToken
	 * @param id
	 * @return 
	 * */
	@GetMapping("/v1/get_header")
	public Object getHeader(@RequestHeader("access_token") String accessToken,String id) {
		params.clear();
		params.put("access_token",accessToken);
		params.put("id", id);
		return params;
	}

结果:

6、HttpServletRequest request自动注入获取参数

        代码如下:

@GetMapping("/v1/test_request")
	public Object testRequest(HttpServletRequest request) {
		params.clear();
		String id=request.getParameter("id");
		params.put("id", id);
		return params;
	}

        作用类似于第二种方法。

总结

        本文主要介绍了HTTP接口GET请求的基本信息和用法,在此文章中记录的很简单,没有做过深的研究,如果读者对相应知识感兴趣,可以移步至官网详细学习。

猜你喜欢

转载自blog.csdn.net/qq_35117024/article/details/88732307