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

  • 相关阅读:
    ROS Learning-013 beginner_Tutorials (编程) 编写ROS服务版的Hello World程序(Python版)
    ROS Learning-012 beginner_Tutorials (编程) 创建自定义的ROS消息和ROS服务
    电子模块 001 --- 遥杆 JoyStick
    ROS Learning-011 beginner_Tutorials (编程) 编写 ROS 话题版的 Hello World 程序(Python版)
    STM32 C++编程 002 GPIO类
    Python 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识
    STM32 C++编程 001 工程模板
    ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)
    Python 网络爬虫 001 (科普) 网络爬虫简介
    Python 黑客 --- 002 入门级 ZIP压缩文件口令暴力破解机
  • 原文地址:https://www.cnblogs.com/xuqw/p/11794617.html
Copyright © 2011-2022 走看看