【网络】HTTP中的GET方法和POST方法

1.GET方法:获取资源

 

GET方法用来请求访问已被URL识别的资源。指定的资源经服务器端接续后返回内容。也就是说,如果请求的资源是文本,那就保持原样返回;如果像是CGI(Conmmon Gateway Interface,通用网关接口)那样的程序,则返回执行后的输出结果;

GET方法请求响应的例子:

请求:GET/index.html HTTP/1.1

Host:www.hackr.jp

响应:返回index.html的页面资源

请求:GET/index.html HTTP/1.1

Host:www.hackr.jp

if-Modified-Since:The,12,Jul 2012 07:30:00 GMT

响应:仅返回2012年12日7点30分以后更新过的index.html页面资源。如果未有内容更新,则以状态码304Not Modidied作为响应返回

2.POST:传输实体主体

POST方法用来传输实体的主体

虽然用GET方法也可以进行传输实体的主体,但一般不用GET方法进行传输,而是用POST方法,虽说POST的功能与GET很相似,但是POST的主要目的并不是获取相应的主体内容。

POST方法请求响应的例子:

请求:GET/index.html HTTP/1.1

Host:www.hackr.jp

Content-Length:1560(1560字节的数据)

3.GET方法和POST方法的区别

 GETPOST
后退按钮/刷新无害数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签可收藏为书签不可收藏为书签
缓存能被缓存不能缓存
编码格式只能进行url编码

有多种编码方式

历史参数保留在浏览器中

参数不会保留在浏览器中

对数据类型的限制只允许ASCII字符

没有限制,也允许二进制数据

安全性与post相比,GET的安全性较差,因为所发送的数据是URL的一部分,在发送密码或者其他敏感信息时绝不要用GETPOST比GET更安全,因为参数不会被保存在浏览器历史或web服务器日志中
可见性在数据在URL中对所有人都是可见的

数据不会显示在URL中

对数据长度的限制有限制,当发送数据时,GET方法向URL添加数据:URL的长度是受限制的(YRL的最大长度是2048个字符)无限制
数据包GET产生一个TCP数据包,浏览器把请求头和请求数据一并发过去,服务器响应200(返回数据)POST产生两个TCP数据包,浏览器会将请求头发送给服务器,待服务器响应100后,浏览器再发送请求数据,服务器响应200(返回数据)

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue项目,我们通常会使用axios作为HTTP请求库。为了方便使用和代码的可维护性,我们可以对axios进行二次封装。 下面是一个简单的axios二次封装示例: ```javascript import axios from 'axios'; // 创建axios实例 const service = axios.create({ baseURL: process.env.BASE_API, // api的base_url timeout: 5000 // 请求超时时间 }); // request拦截器 service.interceptors.request.use( config => { // 在请求发送之前做一些处理 return config; }, error => { // 发送失败 console.log(error); Promise.reject(error); } ); // response拦截器 service.interceptors.response.use( response => { // 数据响应之后做一些处理 return response.data; }, error => { // 响应失败 console.log(error); Promise.reject(error); } ); export default service; ``` 在上面的示例,我们创建了一个axios实例,并对request和response做了一些拦截处理。request拦截器可以在请求发送之前做一些处理,如添加请求头等;response拦截器可以在数据响应之后做一些处理,如对响应数据进行格式化等。 封装好的axios可以在Vue组件直接使用,如下所示: ```javascript import request from '@/utils/request'; export default { data() { return { list: [] }; }, created() { this.fetchList(); }, methods: { fetchList() { request.get('/api/list').then(res => { this.list = res; }); } } }; ``` 通过以上封装,我们可以在不同的Vue组件方便地发送HTTP请求,而且代码也更加简洁和易于维护。 ### 回答2: Vue是一种流行的前端框架,而axios是一个常用的HTTP请求库,在Vue进行二次封装axios可以带来很多好处。 axios是一个强大且易用的库,但是在大型项目,如果直接在组件使用axios,会导致代码冗余和可维护性降低。因此,我们可以对axios进行二次封装,在整个项目统一管理和使用。 首先,对axios进行二次封装可以定义一个http.js文件,在该文件创建一个axios实例,并设置一些默认的配置,例如设置基础URL、请求超时时间等。 接下来,在http.js文件封装一些常用的请求方法,例如get、post、put、delete等。这些方法可以接收一些参数,例如请求的URL、请求的数据等。在这些方法,可以根据需要对请求进行一些公共的处理,例如设置请求头信息、处理错误等。封装后的方法可以通过export暴露出来,供其他组件直接使用。 在Vue使用二次封装的axios非常简单。首先,可以在main.js文件全局引入http.js文件,这样就可以在整个项目使用封装好的axios实例了。然后,在需要发送请求的组件,通过导入http.js文件封装的方法来发送请求。这样做的好处是,在组件只需调用封装好的方法,可以避免重复的代码,并且方便对请求进行统一的管理和调试。 总结来说,通过对axios进行二次封装,在Vue项目可以更好地管理和使用HTTP请求,避免了代码冗余和可维护性降低的问题。封装后的axios实例可以在整个项目使用,且封装的方法简化了在组件发送请求的操作,提高了开发效率。 ### 回答3: Vue使用Axios进行网络请求的时候,可以对其进行二次封装,以方便在项目的统一使用和管理。二次封装的好处是可以在请求前、请求和请求后进行一些公共的操作。 在Vue项目,可以创建一个util文件夹用来存放封装的axios实例。在该文件夹下创建一个request.js文件来封装axios的请求,如下所示: ```javascript import axios from 'axios' // 创建axios实例 const instance = axios.create({ baseURL: 'http://api.example.com', // 设置请求的基础URL timeout: 5000 // 设置超时时间 }) // 请求拦截器 instance.interceptors.request.use(config => { // 在请求发送前可以做一些处理,比如在请求头添加Token // config.headers['Authorization'] = 'Bearer token' return config }, error => { return Promise.reject(error) }) // 响应拦截器 instance.interceptors.response.use(response => { // 在请求响应后可以做一些处理,比如格式化数据、处理错误码等 return response.data }, error => { return Promise.reject(error) }) // 封装get请求 export const get = (url, params) => { return instance.get(url, { params }) } // 封装post请求 export const post = (url, data) => { return instance.post(url, data) } // 封装put请求 export const put = (url, data) => { return instance.put(url, data) } // 封装delete请求 export const del = url => { return instance.delete(url) } ``` 这样就完成了对Axios的二次封装,可以在项目引入该request.js文件并直接使用get、post、put和delete方法来发送网络请求。通过request.js文件的封装,可以统一处理请求的URL、超时时间、请求拦截和响应拦截等,以及实现其他定制化的需求,简化了项目网络请求操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值