zoukankan      html  css  js  c++  java
  • 04 spring boot入门——HTTP接口的GET请求介绍

    目标

    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请求的基本信息和用法,在此文章中记录的很简单,没有做过深的研究,如果读者对相应知识感兴趣,可以移步至官网详细学习。

  • 相关阅读:
    使用 requests 维持会话
    使用 requests 发送 POST 请求
    使用 requests 发送 GET 请求
    requests 安装
    使用 urllib 分析 Robots 协议
    使用 urllib 解析 URL 链接
    使用 urllib 处理 HTTP 异常
    使用 urllib 处理 Cookies 信息
    使用 urllib 设置代理服务
    按单生产程序发布
  • 原文地址:https://www.cnblogs.com/xuqw/p/11794617.html
Copyright © 2011-2022 走看看