-
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:511、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("超时"); } } });
-
Koa2学习系列04-POST/GET请求——常见请求方式处理
2018-10-18 15:56:31在学习了 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:49get:请求指定页面信息,并返回实体主体。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:23GET: 请求指定的页面信息,它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。 HEAD: 只请求... -
八种请求方式,GET和POST请求以外以及不常见的请求
2019-05-14 13:53:50我们平常遇到的绝大多数请求都是GET和POST请求,另外还有一些请求方法, 如:GET、HEAD、POST、PUT、DELETE、OPTIONS、CONNECT、TRACE等 GET 请求页面,并返回页面内容 HEAD 类似于GET请求,只不过返回的...