面试常问一 在浏览器地址栏键入URL,按下回车之后经历的流程: DNS解析(域名解析:域名到IP地址的转换过程):浏览器会根据URL逐层查询DNS服务器缓存解析URL中的域名所对应的IP地址(DNS...2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向--要完成请求必须进行更进一步的操作 4xx:客户端错误--请求有语法错误或请求无法实现 5xx:服务器端错误--服务器未能实现合法的请求...: GET符合幂等性(幂等性:对数据库的一次操作和多次操作的结果是一致的)和安全性(安全性:对数据的操作没有改变数据库的数据) (这时因为Get请求一般是做查询操作的) POST不符合幂等性和安全性...(POST一般是作用在上一级url上的,每次请求都会添加一份新资源,因此不符合幂等)(POST一般是往数据提交数据改变数据库,不符合安全性) 其他层面: Get请求携带参数有限,POST可以携带更多数据...Session简介 Session是服务端的机制,服务器使用一种类似于散列表的结构在服务器保存信息。
; get:通过 id 获取数据; 写入类 API 接着,我们再创建一个包含可读写方法的子类:post、put、delete class ModelApiService extends ReadOnlyApiService...*/ console.log({ message: "图片上传成功!"...$api.posts.delete(post.id); console.log({ message: "成功删除文章!" }); // 执行自定义方法 await this....](state, post) { state.posts = [...state.posts, post]; }, [UPDATE_POST](state, post) {...本瓜以为:如果你的业务是按照这种类的方式有作区分,那么 API 也应该同步如此。一是思路清晰,跟着业务走;二是扩展性和复用性都更好;三是看起来就很高级......
比如一个 ADD_POST mutation 的概述如下:一旦被实现,它将从 payload 中获取一个 post 对象,并将 post.id 添加到 state.postIds 中;它也会将那个 post...现在我们只需要将 post 加入 state.posts。限于 Vue 反应式系统的工作方式我们无法简单地写成 post[post.id] = post 来添加 post。...) state.posts = { ...state.posts, [post.id]: post } } } 测试通过!...的请求,并且因为我们运行在一个测试环境中,所以并不是真有一个服务器在处理请求,这就导致了错误。我们也没有定义 url 或 body -- 我们将在解决掉 axios 错误后做那些。...重要的事情是你在测试组件。
如果我们在这些操作中使用了字符串对象,就会导致TypeError错误。 这个错误的常见情况是在使用一些函数时,函数的参数要求传递字节对象,但我们传递了一个字符串对象。...然后,我们使用requests.post()方法发送POST请求,将byte_data作为请求的数据传递给data参数。 最后,通过检查响应的状态码,我们可以判断请求是否成功。...如果响应状态码为200,表示请求成功,我们通过content属性获取响应数据的字节对象,并使用decode()方法将其解码为字符串对象。...bytes类型和str类型是编程语言中常见的数据类型,用于表示字符或字节序列。下面我会对两者进行详细介绍:bytes类型:bytes类型是不可变的字节序列,它是由一系列0-255范围内的整数构成的。...str类型:str类型是表示字符串的数据类型,它是由Unicode字符构成的不可变序列。str对象可以通过字面量表示,如'hello'。str类型常用于表示文本,是我们在编程中经常使用的字符串类型。
HttpRequest.POST 一个类似字典的对象,包含所有给定的 HTTP POST 参数,前提是请求包含表单数据。...": "1", "msg": "数据格式错误"}) # 表单数据 # keys = request.POST.get("keys") # 如果POST携带的是表单数据,可以这样获取...FILES 只有在请求方法是 POST,并且发布请求的有 enctype=“multipart/form-data” 的情况下,才会包含数据。...在 request.POST 和 request.GET 中的 QueryDict 将在正常的请求/响应周期中被访问时是不可改变的。...如果 safe 为 True,而第一个参数是一个非 dict 对象,则会引发一个 TypeError。
= 的判断逻辑和 ?? 一致,左值为 null 或 undefined 时返回右值,否则返回左值。 不同的是 ??= 包含向左值赋值的操作。类比于于+= -= 中的等号。...分隔符不影响数值的类型转换值,也无法在字符串转数值时被识别。...只要给定的迭代中的一个 promise 成功,就采用第一个 promise 的值作为它的返回值, const promises = [ fetch('/endpoint-a').then(() =>...多个 Promise 实例,包装成一个新的 Promise 实例: 名称 描述 all 只要一个 Promise 失败,立即返回失败,全成功返回成功数组 race ace是比赛、竞赛的意思,所以顾名思义...register 参数分别为: •需要监听的对象•执行回调函数的参数•取消监听用的标识符 参考链接: •https://h3manth.com/ES2021 •https://juejin.cn/post
如果是提交一个 POST 请求,代码如下: fetch(“http://www.example.org/submit.php“, { method: “POST”, headers: {...GloabaFetch 就只包含了一个 fetch 方法用于获取网络资源,其它三个直接对应了相应的 HTTP 概念。此外,在 request/reponse 中,还混淆了 Body。...如果使用了一个不合法的 HTTP Header 属性名或者写入一个不可写的属性,Headers 的方法通常都抛出 TypeError 异常: var myResponse = Response.error...; } }); 由于 Headers 可以在 request 请求中被发送或者在 response 请求中被接收,并且规定了哪些参数是可写的,Headers 对象有一个特殊的 guard 属性。...Response Response 实例是在 fentch() 处理完 promises 之后返回的,它的实例也可用通过 JavaScript 来创建, 但只有在 ServiceWorkers 中才真正有用
() 修改某个项目内容:/project_edit/ def edit_project() 前后端分离,通过method /project 类的视图 GET 获取单个资源 /project/ GET获取全部...XHR request from flask import request 在request中包含了全部的请求信息和环境信息 ?...request values form args cookies 请求的cookies,dict类型 data 包含了请求数据,并转换成字符串,无法处理的mimetype则会转换成stream stream...如果请求的表单无法解码,则会无改动的保存到这里。...当请求数据转换string时,使用data是最好的方式,这个stream只返回数据一次 headers 请求头,dict类型 files 通过POST或者PUT请求上传的文件 environ WSGI隐含的环境配置
生成器 能以一种一致的方式对序列进行迭代(比如列表中的对象或文件中的行)是Python的一个重要特点。...这是通过一种叫做迭代器协议(iterator protocol,它是一种使对象可迭代的通用方式)的方式实现的,一个原生的使对象可迭代的方法。...一般的函数执行之后只会返回单个值,而生成器则是以延迟的方式返回一个值序列,即每返回一个值之后暂停,直到下一个值被请求时再继续。...相似的,你可以用else让只在try部分成功的情况下,才执行代码: f = open(path, 'w') try: write_to_file(f) except: print('...Failed') else: print('Succeeded') finally: f.close() IPython的异常 如果是在%run一个脚本或一条语句时抛出异常,IPython
itertools Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。...迭代时才会无限地迭代下去,如果只是创建了一个迭代对象,它不会事先把无限个元素生成出来,事实上也不可能在内存中创建无限多个元素。...只要作用于函数的两个元素返回的值相等,这两个元素就被认为是在一组的,而函数返回值作为组的key。...: with语句首先执行yield之前的语句,因此打印出; yield调用会执行with语句内部的所有语句,因此打印出hello和world; 最后执行yield之后的语句,打印出...Post 如果要以POST发送一个请求,只需要把参数data以bytes形式传入。
键(key)必须是不可变的,例如,数字,字符串或元组。...In [77] print(z[3]) 2 切分元组 切分操作返回包含所请求项的新元组。切分很适合在元组中获取值的子集。...元组是不可变的,这意味着在初始化元组之后,不可能更新元组中的单个项。...元组是不可变的,而列表是可变的。以下是元组列表的一些其他优点 组比列表更快。如果你要定义一组常量值,那么你将要做的就是迭代它,使用元组而不是列表。...: unhashable type: 'list' Task: 用Python生成斐波那契序列 Fibonacci序列是一个整数序列,其特征在于前两个之后的每个数字是前两个数字的总和。
else: else里边的内容都会被执行。在for循环完毕之后执行。 可被迭代的数据类型 有哪些数据类型可以被for循环遍历呢? 结论:列表、字典、字符串。...我们可以在利用字典名[key]的方式,获取key所对应的值。 打印循环的次数取决于字典中键名key的个数。...括号里,逗号前边的数字被迭代时是包含的,右边的不包含。...迭代列表时获取索引 我们通过上边迭代列表和字典的代码中可以看出来,for后边的变量在迭代列表的时候是列表内的元素、迭代字典的时候则是字典里边的键名。...for循环的else 可以看打印结果得知,在满足i==3的条件之后,直接跳出了当次的循环没有打印3这个数字。
我们都知道无论是 SSH 也好、还是 SSM 也罢,搭建时都会依赖一堆的 JAR 包和一坨坨的代码,而今天一次无心的 flask 尝试,感觉提供一个 WEB 服务真的好简单。...https://www.getpostman.com/downloads/ 然后打开页面配置请求头,在Headers中添加key为Content-Type,value 为 application/json...如何获取 JSON 请求? Flask提供了好几种方式获取请求参数,先尝试用 request.get_json() 获取试试。...TypeError: byte indices must be integers or slices, not str 当predict_data=request.get_data()获取数据时,然后直接取...写在最后 好了,技术的更新迭代就是快,几分钟的简单分享,主要让你接触并认识一下 flask,并播了一个 postman 的插曲,希望你能够喜欢吧。
JSON 数据,前端拿到之后渲染,所以 Koa 返回的数据是这样的 ctx.body = [{name: 'uncertainty'}, {name: '测不准'}],希望我的表达让您理解。...get 请求,但是推荐大家安装 postman,后期可以方便测试 post 请求或者上传文件功能。...,通过 function* 声明,函数体内通过 yield 来指明函数的暂停点,该函数返回一个迭代器,并且函数执行到 yield 语句前面暂停,之后通过调用返回的迭代器 next() 方法来执行 yield...body 是 http 协议中的响应体,header 是指响应头,如果要抛异常可以直接使用 ctx.throw(500, '接口异常'),ctx.status 设置状态码,ctx.url 获取请求 URL...Header Authorization 字段中(后面会介绍),每次请求后端都要进行校验,不可能每个接口都写判断,Koa 通过编写中间件来实现 token 验证。
在解释基本迭代器之后,本章涵盖了生成器,这是 ES6 的一个强大新功能,主要用作一种特别简单的创建迭代器的方法。...HTTP 请求,请求指定的 URL,然后,在该请求挂起期间,它返回一个 Promise 对象。...有时,在复杂的网络环境中,错误可能更多或更少地随机发生,通过简单地重试异步请求来处理这些错误可能是合适的。...(Object.defineProperty()成功时返回o,失败时抛出 TypeError。)...成功时返回true,失败时返回false(如果属性是只读的,则可能失败)。如果o不是对象,则抛出 TypeError。
️ TypeError: argument of type ‘NoneType’ is not iterable - NoneType类型的参数不可迭代完美解决方法 摘要 大家好,我是默语,擅长全栈开发...在日常开发中,TypeError: argument of type 'NoneType' is not iterable 是一个常见的Python错误。...关键词:TypeError、NoneType、迭代、Python 错误、错误处理、调试技巧 引言 ✨ 在Python开发中,TypeError 是一种常见的错误类型,尤其是当我们错误地操作 None 时...解决方案与优化 3.1 显式检查 None 值 在处理可能为 None 的值时,最安全的做法是显式检查该值是否为 None。这样可以避免不必要的迭代错误。...data = None try: for item in data: print(item) except TypeError: print("数据不可迭代") 3.4
从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。...其内部状态如下: 状态之间的流转是不可逆的,代码书写如下: function httpPromise(): Promise { return...Promise 是如何实现的? 在刚入行的时候也去研究过《如何实现一个 Promise》这个课题,尝试写了下如下的代码。...以 “请求 N 次重试” 的实现为例: /** * @description: 限定次数来进行请求 * @example: 例如在5次内获取到结果 * @description: 核心要点是完成tyscript..., times: number) { // 获取axios的请求实例 let timeCount = 0; async function execTask(resolve, reject,
引出问题: 如下面所示,存在一个类,并且产生了一个对象,现在想用for循环实现对象的迭代,结果报错了 # -*- coding: utf-8 -*- """ 演示一个类是不可以迭代的 结果存在报错信息...,望谅解 (1)一个类中加入__iter__f (self) 方法后变成可迭代的 并返回如下的错误,说明是类型不正确,但是已经能够发生迭代了 for i in A: TypeError: iter()...) return self.obj.names[0] 传参的结果如下,已经能够成功打印列表中的第一个值 (6) 获取所有传递的列表的长度 len_name = len(self.obj.names) #...(3)在class Students():的__iter__()方法中返回一个对象 结果为 None ,并且 None是无限的循环下去,说明已经变成了可以进行迭代的,只是返回值不正确而已 (4)在(3)...) return self.obj.names[0] 传参的结果如下,已经能够成功打印列表中的第一个值 (6) 获取所有传递的列表的长度 len_name = len(self.obj.names) #
在使用python的urllib2模拟post时的一个问题,目前还搞不清楚是urlencode的bug还是php对于post支持的问题。各位看官不妨帮我分析下。...情景是这样的,我需要往一个php开发的api接口上post数据,数据格式如下: :: {"items":{"001":["1","2"]},"title":"test"} 这是那个api所能处理的格式,...请求在php端输出出来是: :: {"items":"{'001':['1','2']}","title":"test"} 它把items对应的value转成一个string了。...经过它处理之后,json数据会被编码成url地址上那种get请求一类的编码,编码完成之后,urlencode中似乎只是对一级的键值对进行了处理,没有处理这种嵌套情况。...表单提交之后的post数据编码后是这样的:item%5B001%5D%5B%5D=1&item%5B001%5D%5B%5D=2&title=test urllib.urlencode编码后的数据是这样的
返回值 如果传入的参数是一个空的可迭代对象,则返回一个「已完成(already resolved)」状态的 Promise。...只要传入的迭代对象中的任何一个 promise 变成成功(resolve)状态,或者其中的所有的 promises 都失败,那么返回的 promise 就会 「异步地」(当调用栈为空时) 变成成功/失败...返回值:一旦所指定的 promises 集合中每一个 promise 已经完成,无论是成功的达成或被拒绝,「未决议的」 Promise将被「异步」完成。...实现 AJAX 请求 AJAX是 Asynchronous JavaScript and XML 的缩写,指的是通过 JavaScript 的 异步通信,从服务器获取 XML 文档从中提取数据,再更新当前网页的对应部分...在这个对象上「使用 open 方法创建一个 HTTP 请求」,open 方法所需要的参数是请求的方法、请求的地址、是否异步和用户的认证信息。 在发起请求前,可以为这个对象「添加一些信息和监听函数」。
领取专属 10元无门槛券
手把手带您无忧上云