关于如何发api请求
requestController
这是学长封装的一个方便请求的统一控制器,你在写每一个api方法的时候都应该在参数里带上它,复制粘贴就行。
关于requestController的解读
先看这个RequestController规定的类型RequestInterface,表示了他的request方法(我们最常用的RequestController)
1.options
request的第一个参数对象,
通常需要传入url,method,如果有请求参数,query/body,需要加一个data,如果请求头不是默认的content-type
:application/json
,此时就需要head{
‘Content-Type’: ‘application/x-www-form-urlencoded’,//举例
},
其余的目前没有接触过,不是很常用
2.addition
request的第二个参数对象,传入base:test | main(测试环境和正式环境做出了区分);
Query参数
Body参数
Query参数和Body参数的主要区别不仅在于它们在HTTP请求中的位置,还在于它们的用途和适用的HTTP方法。
- Query参数(Query String Parameters):
- Query参数通常附加在URL的末尾,并以?开始,多个参数之间通过&符号分隔,例如:/api/items?category=books&price=10。
- 它们主要用于GET请求,用于过滤、排序或指定特定的请求数据。
- 在GET请求中,数据是公开的,可见的,这意味着任何人都可以在URL中看到这些参数。
- 它们不适合传递敏感信息,因为它们可能会被保存在浏览器历史、服务器日志、或其他地方。
- Body参数(Body Parameters):
- Body参数包含在HTTP请求的正文(body)中,对于外部不可见。
- 它们主要用于POST和PUT请求,用于发送要被服务器处理的数据(例如,创建或更新资源)。
- Body可以包含不同格式的数据,如application/json、application/x-www-form-urlencoded等。
- 适合传递更大的数据量和敏感信息,因为它们不会显示在URL中。
虽然query参数通常与GET请求一起使用,而body参数通常与POST或PUT请求一起使用,但这并不是严格的规则。有些情况下,例如在使用POST请求进行复杂搜索时,你可能会看到query参数和body参数同时使用。
简而言之,两者的主要区别在于它们的用途(query参数更多用于指定资源的检索,body参数更多用于传递资源数据),以及它们在HTTP请求中的位置。
3.globalFilter
/ BaseURL插入过滤器 */
取了option里的url和addition的base,自动的对于不同环境(正式环境,测试环境,mock环境,失物招领环境)的不同请求路径做出了区分;
/ Auth过滤器 */
过滤器会向请求的 header 中添加一个 token 属性,这个 token 来自 AuthModule。这通常用于身份验证。
4.pendingCacheQueue
1.返回缓存中的promise
pendingCacheQueue 是一个 Map 对象,用于缓存正在进行的请求。这可以通过缓存键(cacheKey)来实现对相同请求的快速响应,避免重复发送相同的网络请求。
键存string(这里是option对象的Json化后的字符串cacheKey)和值存promise请求的一个Map,
先根据cacheKey去取对应的promise,如果非空那就返回的是缓存里的Promise。否则进入常规的请求任务,(过滤器->网络请求->拦截器->全局请求异常处理)