精华内容
下载资源
问答
  • HTTP请求中常见请求方式
    万次阅读
    2019-06-22 10:13:34

     

    GET

    向特定的路径资源发出请求,数据暴露在url中

    POST

    向指定路径资源提交数据进行处理请求(一般用于上传表单或者文件),数据包含在请求体中

    OPTIONS

    返回服务器针对特定资源所支持的HTTP请求方法,允许客户端查看、测试服务器性能

    HEAD

    向服务器与GET请求相一致的响应,响应体不会返回,可以不必传输整个响应内容

    PUT

    从客户端向服务器传送的数据取代指定的文档的内容 

    DELETE

    请求服务器删除指定的页面

    TRACE

    回显服务器收到的请求,主要用于测试或诊断

    CONNECT

    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务

     

     

     

     

    更多相关内容
  • Springboot 常见请求方式

    千次阅读 2018-05-22 13:46:29
    } } POST 请求 1、表单请求 1、 请求api 方式一 http://localhost:8083/api/find?name=zhaoyanjun 实例图: 2、 请求api 方式二:表单 http://localhost:8083/api/find 实例图: 接口设计 package ...

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80404645
    本文出自【赵彦军的博客】

    用户模型类

    package com.yiba.wifi.news.bean.domain;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    @Entity
    public class User {
    
        @Id
        @GeneratedValue
        Integer id;
    
        String name;
    
        Integer age ;
    
        //....set 省略
        //....get 省略
    }
    
    

    Get 请求

    1、无参

    请求api

    http://localhost:8083/api/find
    

    接口设计

    package com.yiba.wifi.news.controller;
    
    import com.yiba.wifi.news.bean.domain.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("api")
    public class UserController {
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
        /**
         * 查询 id 数据
         * @return
         */
        @GetMapping("find")
        public User findOne() {
    
            //查询用户逻辑.....
            return new User();
        }
    
    }
    
    

    2、带参数

    请求api

    http://localhost:8083/api/find?name=zhaoyanjun
    
    

    接口设计

    package com.yiba.wifi.news.controller;
    
    import com.yiba.wifi.news.bean.domain.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("api")
    public class UserController {
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
        /**
         * 查询 id 数据
         * 当 name 为 null 的时候,用默认值 yanjun 代替
         * @return
         */
        @GetMapping("find")
        public User findOne(@RequestParam(value = "name", defaultValue = "yanjun") String name) {
    
            //查询用户逻辑.....
            logger.info("name:" + name);
            return new User();
        }
    
    }
    
    

    3、RESTful API

    请求api

    http://localhost:8083/api/find/5
    

    接口设计

    package com.yiba.wifi.news.controller;
    
    import com.yiba.wifi.news.bean.domain.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("api")
    public class UserController {
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
        /**
         * 查询 id 数据
         *
         * @param id
         * @return
         */
        @GetMapping("find/{id}")
        public User findOne(@PathVariable("id") Integer id) {
            logger.info("id:" + id);
            
            //查询用户逻辑.....
            return new User();
        }
    
    }
    
    

    POST 请求

    1、表单请求

    1、 请求api 方式一

    http://localhost:8083/api/find?name=zhaoyanjun
    

    实例图:
    这里写图片描述

    2、 请求api 方式二:表单

    http://localhost:8083/api/find
    

    实例图:

    这里写图片描述

    接口设计

    package com.yiba.wifi.news.controller;
    
    import com.yiba.wifi.news.bean.domain.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("api")
    public class UserController {
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
        /**
         * 查询 id 数据
         *
         * @return
         */
        @PostMapping("find")
        public User findOne(@RequestParam(value = "name", defaultValue = "yanjun",required = false) String name) {
    
            //查询用户逻辑.....
            logger.info("name:" + name);
            return new User();
        }
    
    }
    
    

    2、参数为对象

    请求api

    http://localhost:8083/api/find
    

    请求 body

    {
        "id": 1,
        "name": "yanjun",
        "age": 18
    }
    

    接口设计

    package com.yiba.wifi.news.controller;
    
    import com.yiba.wifi.news.bean.domain.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("api")
    public class UserController {
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
        /**
         * 查询 id 数据
         *
         * @return
         */
        @PostMapping("find")
        public User findOne(@RequestBody User user) {
    
            //查询用户逻辑.....
            logger.info("name:" + user.getName());
            return user;
        }
    
    }
    
    

    请求示例:

    这里写图片描述

    请求 header 获取

    获取单个 header

    接口设计

    package com.yiba.wifi.news.controller;
    
    import com.yiba.wifi.news.bean.domain.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("api")
    public class UserController {
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
    
        /**
         *
         * @param user
         * @param token 获取 header 里面的 token 字段
         * @return
         */
        @PostMapping("find")
        public User findOne(@RequestBody User user,
                            @RequestHeader(value = "token") String token) {
    
            //查询用户逻辑.....
            logger.info("token:" + token);
            return user;
        }
    
    }
    
    

    请求示例

    这里写图片描述

    获取所有 header

    接口设计

    package com.yiba.wifi.news.controller;
    
    import com.yiba.wifi.news.bean.domain.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.HttpHeaders;
    import org.springframework.web.bind.annotation.*;
    
    import javax.servlet.http.HttpServletRequest;
    
    @RestController
    @RequestMapping("api")
    public class UserController {
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
        @Autowired
        private HttpServletRequest request;
    
        @PostMapping("find")
        public User findOne(@RequestBody User user) {
    
            logger.info("CONTENT_TYPE:" + request.getHeader(HttpHeaders.CONTENT_TYPE));  //获取header
            logger.info("TOKEN:" + request.getHeader("token")); //获取header
    
            return user;
        }
    }
    
    

    SpringBoot 上传多文件 MultipartFile

    服务器接收一个文件

    @RestController
    public class UserController {
    
        @PostMapping("find")
        public String findOne(@RequestParam("file") MultipartFile part) {
            //part 名字
            String fileName = part.getName();
    
            //文件名字
            String originalFilename = part.getOriginalFilename();
    
            //获取文件内容
            String fileContent = getResult(part);
    
            return "成功";
        }
        
        //读取文件内容
        public String getResult(MultipartFile part) {
            BufferedInputStream bufferedInputStream = null;
            try {
                InputStream inputStream = part.getInputStream();
                bufferedInputStream = new BufferedInputStream(inputStream);
                byte[] buffer = new byte[1024];
                int length; //代表实际读取的字节数
                String result = "";
                while ((length = bufferedInputStream.read(buffer)) != -1) {
                    //length 代表实际读取的字节数
                    result = result + new String(buffer, 0, length);
                }
                return result;
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (bufferedInputStream != null) {
                    try {
                        bufferedInputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return "";
        }
    }
    

    服务器接收多个文件,方式一

    @RestController
    public class UserController {
    
        @PostMapping("find")
        public String findOne(@RequestParam("file") MultipartFile part, @RequestParam("file2") MultipartFile part2) {
    
            //获取第一个文件内容
            String fileContent = getResult(part);
    
            //获取第二个文件内容
            String fileContent2 = getResult(part2);
    
            return "成功";
        }
    }
    

    服务器接收多个文件,方式二

    @RestController
    public class UserController {
    
        @PostMapping("find")
        public String findOne(@RequestParam("file") MultipartFile[] files) {
             
            //接收多个文件 
            for (MultipartFile part : files) {
                //获取文件内容
                String fileContent = getResult(part);
                System.out.printf("内容:" + part.getName() + " " + fileContent);
            }
            return "成功";
        }
    }
    

    服务器接收多个文件+单个普通参数

    @RestController
    public class UserController {
    
        @PostMapping("find")
        public String findOne(@RequestParam("file") MultipartFile[] files, @RequestParam String age) {
            //接收多个文件
            for (MultipartFile part : files) {
                //获取文件内容
                String fileContent = getResult(part);
                System.out.printf("内容:" + part.getName() + " " + fileContent);
            }
    
            //接收普通参数
            String ageValue = age;
            System.out.printf("普通参数age:" + ageValue);
            
            return "成功";
        }
    }    
    

    服务器接收多个文件+多个普通参数

    @RestController
    public class UserController {
    
        @PostMapping("find")
        public String findOne(@RequestParam("file") MultipartFile[] files, @RequestParam String age, @RequestParam String name) {
            //接收多个文件
            for (MultipartFile part : files) {
                //获取文件内容
                String fileContent = getResult(part);
                System.out.printf("内容:" + part.getName() + " " + fileContent);
            }
    
            //接收普通参数
            String ageValue = age;
            System.out.printf("普通参数age:" + ageValue);
    
            return "成功";
        }
    }    
    

    个人微信号:zhaoyanjun125 , 欢迎关注

    展开全文
  • Ajax常见请求方式详解(增删改查)

    千次阅读 多人点赞 2018-02-05 14:44:51
    1、GET请求(查) ... 一般应用于从服务器获取数据,如果get请求向服务器传递内容,一般使用url问号传参的方式。 $.ajax({ url: "", type: "GET", dataType: "json", data: { "id":2 }, success:

    1、GET请求(查)

     一般应用于从服务器获取数据,如果get请求向服务器传递内容,一般使用url问号传参的方式。

         $.ajax({
                url: "",
                type: "GET",
                dataType: "json",
                data: { "id":2 },
                success: function (data) {
                    console.log('获取成功')
                }.bind(this),
                error: function (xhr, status, err) {
                }.bind(this)
            });
        }

    2、POST请求(增)

    一般用于向服务器推送数据,post请求给服务器传递内容,一般采用请求主体的方式传递给服务器。

    $.ajax({
             url: '',  
             type: 'POST',  
             data: {"id": 1, "username":"max"},  
             success: function (data) {
                        console.log('添加success');
                  }
                    }.bind(this),
                    error: function (xhr, status, err) {
                    }.bind(this),               
                }); 

    3、PUT请求(改)

    一般应用于给服务器增加资源文件(上传图片等)

     $.ajax({
        url:"",
        type: "PUT",
        dataType: "json",
        data:{
         "id":1,
         "name":"myname",
         "desc":"description",
         "key":"zbc",
        },
        success: function (data) {
            console.log('修改成功');
        }.bind(this),
        error: function (xhr, status, err) {
        }.bind(this)
      });

    4、DELETE请求(删)

    一般应用于从服务器上删除文件

    $.ajax({
        url:"",
        type: "DELETE",
        dataType: "json",
        data: {"id":1, "name":"zhangsan"},
        success: function (data) {
            console.log('成功删除');
        }.bind(this),
        error: function (xhr, status, err) {
        }.bind(this)
      });

    另附:网络请求超时处理:

    var ajaxTimeoutTest = $.ajax({
      url:'',  //请求的URL
      timeout : 1000, //超时时间设置,单位毫秒
      type : 'get',  //请求方式,get或post
      data :{},  //请求所传参数,json格式
      dataType:'json',//返回的数据格式
      success:function(data){ //请求成功的回调函数
        alert("成功");
      },
      complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数
        if(status=='timeout'){//超时,status还有success,error等值的情况
           ajaxTimeoutTest.abort();
           alert("超时");
        }
      }
    });



    展开全文
  • 在学习了 koa-router 之后,我们就可以用它来处理一些常见请求了,比如 POST/GET 。   koa-router 提供了 .get、.post、.put 和 .del 接口来处理各种请求,但实际业务上,我们大部分只会接触到 POST...

    Http 请求

    在学习了 koa-router 之后,我们就可以用它来处理一些常见的请求了,比如 POST/GET 。

     

    koa-router 提供了 .get.post.put 和 .del 接口来处理各种请求,但实际业务上,我们大部分只会接触到 POST 和 GET,所以接下来只针对这两种请求类型来说明。

     

    当我们捕获到请求后,一般都需要把请求带过来的数据解析出来。数据传递过来的方式一般有三种:

     

    请求参数放在 URL 后面

    http://localhost:3000/home?id=12&name=ikcamp
    

     

    koa-router 封装的 request 对象,里面的 query 方法或 querystring 方法可以直接获取到 Get 请求的数据,唯一不同的是 query 返回的是对象,而 querystring 返回的是字符串。

    修改 app.js,我们加入解析方式:

      const Koa = require('koa')
      const router = require('koa-router')()
      const app = new Koa()
    
      router.get('/', async(ctx, next) => {
        ctx.response.body = `<h1>index page</h1>`
      })
    
      router.get('/home', async(ctx, next) => {
        console.log(ctx.request.query)
        console.log(ctx.request.querystring)
        ctx.response.body = '<h1>HOME page</h1>'
      })
    
      router.get('/404', async(ctx, next) => {
        ctx.response.body = '<h1>404 Not Found</h1>'
      })
    
      // add router middleware:
      app.use(router.routes())
    
      app.listen(3000, () => {
        console.log('server is running at http://localhost:3000')
      })

     

    运行代码,并通过浏览器访问 http://localhost:3000/home?id=12&name=ikcamp,然后打开控制台会看到下面的输出内容:

    { id: '12', name: 'ikcamp' }
    id=12&name=ikcamp
    

     

    请求参数放在 URL 中间

    http://localhost:3000/home/12/ikcamp
    

     

    这种情况下,解析方式肯定与上面的不一样了,koa-router 会把请求参数解析在 params 对象上,我们修改 app.js 文件,增加新的路由来测试下:

      // 增加如下代码
      router.get('/home/:id/:name', async(ctx, next)=>{
        console.log(ctx.params)
        ctx.response.body = '<h1>HOME page /:id/:name</h1>'
      })

     

    运行代码,并通过浏览器访问 http://localhost:3000/home/12/ikcamp,然后查看下控制台显示的日志信息:

    { id: '12', name: 'ikcamp' } 
    

     

    请求参数放在 body 中

     

    当用 post 方式请求时,我们会遇到一个问题:post 请求通常都会通过表单或 JSON 形式发送,而无论是 Node 还是 Koa,都 没有提供 解析 post 请求参数的功能。

     

    koa-bodyparser 说:『是时候登场了!』

     

    首先,安装 koa-bodyparser 包:

    npm i koa-bodyparser -S

     

    安装完成之后,我们需要在 app.js 中引入中间件并应用:

      const Koa = require('koa')
      const router = require('koa-router')()
      const bodyParser = require('koa-bodyparser')
      const app = new Koa()
    
      app.use(bodyParser())
    
      router.get('/', async(ctx, next) => {
        ctx.response.body = `<h1>index page</h1>`
      })
    
      router.get('/home', async(ctx, next) => {
        console.log(ctx.request.query)
        console.log(ctx.request.querystring)
        ctx.response.body = '<h1>HOME page</h1>'
      })
    
      router.get('/home/:id/:name', async(ctx, next)=>{
        console.log(ctx.params)
        ctx.response.body = '<h1>HOME page /:id/:name</h1>'
      })
    
      router.get('/404', async(ctx, next) => {
        ctx.response.body = '<h1>404 Not Found</h1>'
      })
    
      app.use(router.routes())
    
      app.listen(3000, () => {
        console.log('server is running at http://localhost:3000')
      })

    然后我们来试着写一个简单的表单提交实例。修改 app.js 增加如下代码,实现增加表单页面的路由:

      // 增加返回表单页面的路由
      router.get('/user', async(ctx, next)=>{
        ctx.response.body = 
        `
          <form action="/user/register" method="post">
            <input name="name" type="text" placeholder="请输入用户名:ikcamp"/> 
            <br/>
            <input name="password" type="text" placeholder="请输入密码:123456"/>
            <br/> 
            <button>GoGoGo</button>
          </form>
        `
      })

     

    继续修改 app.js 增加如下代码,实现 post 表单提交对应的路由:

      // 增加响应表单请求的路由
      router.post('/user/register',async(ctx, next)=>{
        let {name, password} = ctx.request.body
        if( name === 'ikcamp' && password === '123456' ){
          ctx.response.body = `Hello, ${name}!`
        }else{
          ctx.response.body = '账号信息错误'
        }
      })

     

    常见的几种请求,以及相应的参数传递解析,我们已经学习过了。下一节中,我们会把项目整理重构下,做个分层,并引入视图层。

    原文https://github.com/ikcamp/koa2-tutorial/tree/3-router-request

    展开全文
  • 8种常见的HTTP请求方式你知道多少?

    千次阅读 2020-05-22 14:10:04
    兔子ip今天就为大家带来最可靠的几种请求方式。 其实HTTP协议是一个广泛应用的Internet协议,目前常用八种请求方式,分别是GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,不同请求方法有什么作用呢?接...
  • 接口请求的六种常见方式

    千次阅读 2020-11-26 18:35:11
    接口请求的六种常见方式: 1、Get 向特定资源发出请求请求指定页面信息,并返回实体主体) 2、Post 向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改 3、Put 向...
  • 几种请求方式

    千次阅读 2021-07-31 23:01:49
    get:请求指定页面信息,并返回实体主体。head:类似于get请求,只不过返回的响应中...connect:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。options:允许客户端查看服务器的性能。trace:回显服务...
  • HTTP请求方式

    千次阅读 2021-09-08 16:02:28
    这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。 请求类似于下面这样(无关的请求头在本文中都省略...
  • Python常见的网页请求方式总结

    千次阅读 2018-07-29 16:38:07
    今天我们便以代码形式,对常见的网页请求方式进行分析总结。 1. urlopen()  首先我们先用urlopen完成一个简单的数据请求,代码如下: from urllib.request import Request,urlopen url = '...
  • 几种常见网络请求方式

    千次阅读 2016-05-30 23:32:23
    GET: 请求指定的页面信息,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。 HEAD: 只请求...
  • 我们平常遇到的绝大多数请求都是GET和POST请求,另外还有一些请求方法, 如:GET、HEAD、POST、PUT、DELETE、OPTIONS、CONNECT、TRACE等 GET 请求页面,并返回页面内容 HEAD 类似于GET请求,只不过返回的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 557,423
精华内容 222,969
关键字:

常见请求方式