参考文章

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Overview

First

​ 首先,需要了解HTTP(s)请求,其主要包含那几个重要部分。各个部分具有什么功能。第一个需要了解的URI和URL。URL时URI的子集,这里只需要掌握URL的知识即可。

​ 除了URL这个基础之外,http(s)还可以通过Header传递信息,如果不熟悉,可以复习一下http/https报文的结构。Header一般传递一些与传输相关的内容,比如所传输的信息的类型,信息的长度等等(但也不完全是)。在API调用中,这个部分一般用于鉴定请求者的身份,比如token的验证方式。一般在API文件中会详细的规定出请求所需要的参数。

​ 除了Header之外,在请求的过程中,另一个中重要的概念就是请求方式了,常见的请求方式有GET,POST。其他的请求方式我们一般来说了解比较少,不过在API请求中,GET和POST的使用相对居多,其他请求方式在一些文件上传和管理中也会涉及部分。

​ 一个HTTP(s) API请求的主要是这三个部分:请求方式,URL,Header。(按照http/https报文的顺序,本文按照URL,Header,强求方法的顺序来介绍,主要是请求方法相对简单,大家对其相对了解)

URL

一个完整的URL如下:

protocol://hostname[:port]/path/[;parameters][?query]#fragment

这里面用几个重要的概念:比如 query, fragment

  • protocol: 协议,这里可以是http/https
  • hostname: 主机地址,也就是服务器地址,这里可以是域名或者IP。
  • path: 资源路径,指的是主机对应资源的地址。不过在api中可以将其视为一个参数,常常可以作为对象路径或者请求方法。
  • parameters: 参数,这是用于指定特殊参数的可选项。这个目前我还没见过。
  • query: 查询,可以向服务器显示的传递参数,一般以?开头。多个参数以&相连,参数采用键值对,中间以=相连。
  • frament: 信息断片,常常出现在各种文档类网站中,用于标记title位置。

除了URL之外,http(s)还可以通过http-header传递信息。

HTTP(s)-Header

HTTP header(HTTP 首部) - 术语表 | MDN (mozilla.org)

HTTP header(HTTP 首部,HTTP 头)表示在 HTTP 请求或响应中的用来传递附加信息的字段,修改所传递的消息(或者消息主体)的语义,或者使其更加精确。消息首部不区分大小写,开始于一行的开头,后面紧跟着一个 ':' 和与之相关的值。字段值在一个换行符(CRLF)前或者整个消息的末尾结束。

​ Header可以根据不同的作用分为下面几种类型:

  • General header:公共头部,可以应用于请求和响应中,但是与在消息主体中的数据无关。

  • Request header:请求头部,含有与所要获取的资源或者客户端自身相关的附加信息。
    • 在API中,可以作为验证请求身份的一个标识,用于鉴权。比如token, cookie(少用)。
    • 用于表明请求方对相应内容的一些要求,比如语言类型,编码方式等。
  • Response header:响应头部,含有与响应相关的附加信息,比如它的位置或者与服务器相关的信息(名称、版本号等)。
    • 一般是服务器向请求方返回的HTTP的头部信息。
    • 可以设置cookie。
  • Entity header: 实体头部,含有与消息主体相关的附加信息,比如长度或者MIME类型。
    • 可以标注返回内容的形式,比如application/json,就是json格式数据。
    • MIME包含了我们常见的数据形式,包括图像,视频和各类文本形式。

​ 在API请求中,我们在意的一般是Request Header(请求头部),一般API文档会告诉我们如何设定头部参数,一般用于鉴权和请求内容说明(MIME类型,长度,hash之类)。

请求方式

HTTP 请求方法 - HTTP | MDN (mozilla.org)

  • GET : GET方法请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据。
  • HEAD : HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体。
  • POST : POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。
  • PUT : PUT方法用请求有效载荷替换目标资源的所有当前表示。
  • DELETE : DELETE方法删除指定的资源。
  • 其他参考: HTTP 请求方法 - HTTP | MDN (mozilla.org)

在API调用时,其实各种方法没有差异,可以理解为是一种人为规定,只需要按照API文档的方法进行请求就可以了。

在设计API时,可以根据功能的需要,选择设置不同的请求方式。

HTTP(s) API 经验总结的更多相关文章

  1. C#调用百度地图API经验分享(一)

    最近客户提了一个需求,要在网站中添加百度地图的显示,其实原来是有谷歌地图的,但由于谷歌在大陆遭到封杀,只好再给用户增加一个选择了. 下面我将自己最近整理的一些知识分享给大家. 如何使用百度地图API: ...

  2. C#调用百度地图API经验分享(四)

    这一篇,记录一下我调用的地图API实现的功能.下面介绍的都是一些片段的节选,不能直接复制就运行.在实现之前肯定要加载地图,先放一个webbroser控件,然后如下: private void Form ...

  3. C#调用百度地图API经验分享(三)

    这一篇我将跟大家分享一下我自己在开发过程中总结出的一些操作地图的方法,属性,及思路,希望可以让大家少走弯路. 1.定位 一般百度的示例DEMO里开始初始化地图时用的都是map.centerAndZoo ...

  4. C#调用百度地图API经验分享(二)

    接着上一篇,将上一篇代码的js提取出来:<script type="text/JavaScript">var map = new BMap.Map("allm ...

  5. Html5 Device API详解

    三.四月曾学习过html5相关知识,并就html5 device api做过一次讲解 课程时长一个小时,预期达到level 200目标,即知道html5 device api是什么,且知道怎么实现 面 ...

  6. 第二篇:Entity Framework CodeFirst & Model 映射

    前一篇 第一篇:Entity Framework 简介 我有讲到,ORM 最关键的 Mapping,也提到了最早实现Mapping的技术,就是 特性 + 反射,那Entity Framework 实现 ...

  7. 透明的LISTVIEW

    .NET就是封装的太密了,有时很多时候让我们反而更麻烦,特别是COPY不到的时候,又不懂自已想的话,说土一点就是死路一条, 记得以前经常用一句话,C++支持,可C#他不支持啊!就这样安慰自已 其实做多 ...

  8. Web API接口设计经验总结

    在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winfo ...

  9. Web API系列(一)设计经验与总结

    在移动互联网的时代, Web服务已经成为了异构系统之间的互联与集成的主要手段,各种 Web服务几乎都采用REST风格的Web Api来构建. 通过Http协议的形式来. 以Get/Post方式发送请求 ...

随机推荐

  1. 使用puppeteer生成pdf与截图

    之前写过一篇 vue cli2 使用 wkhtmltopdf 踩坑指南,由于wkhtmltopdf对vue的支持并不友好,而且不支持css3,经过调研最终选择puppeteer,坑少,比较靠谱. 一. ...

  2. 第六十篇:Vue的基本使用

    好家伙,要来了,经典"hello world" 试用一下vue ① 导入 vue.js的 script 脚本文件 ② 在页面中声明一个将要被vue所控制的DOM区域 ③ 创建vm实 ...

  3. 第四篇:理解vue代码

    解释以下代码: 实现输入框中能够打字的功能 <el-input v-model="input" placeholder="在这打字"></el ...

  4. Java开发学习(二十九)----Maven依赖传递、可选依赖、排除依赖解析

    现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependency>标签来进行jar包的引入即可. <depende ...

  5. InnoDB_锁总结

    1. 查询会对资源添加共享锁 加了共享锁的资源不可以被修改:但可以被查询(也是会在资源上再加共享锁) 2. 数据修改会对资源添加排他锁 加了排他锁的资源只能被持有这个排他锁的事务读取和修改,其他事务读 ...

  6. 操作服务器的神奇工具Tmux

    Tmux 是什么? 会话与进程 命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令.用户与计算机的这种临时的交互,称为一次 ...

  7. AVL tree 高度上下界推导

    1. 最大高度对应 Node 数量 \(N_{h}\) 的递归公式 设有一棵 AVL tree 的高度为 \(h\), 对于该树, 构成该树的最少 node 数量为 \(N_{h}\) . 有: 最坏 ...

  8. [开源福利] FreeRedis 历时两年正式发布 v1.0 [C#.NET Redis Client]

    最近很多 .net QQ 群无故被封停,特别是 wpf 群几乎全军覆没.依乐祝的 .net6交流群,晓晨的 .net跨平台交流群,导致很多码友流离失所无家可归,借此机会使用一次召唤术,有需要的请加群: ...

  9. ACL和NAT

    1 ACL 1.1 ACL的作用 1).用来对数据包做访问控制(丢弃或者放弃) 2).结合其他协议,用来匹配范围 1.2 ACL的工作原理 当数据包从接口经过时,由于接口启用了ACL,此时路由器会对报 ...

  10. std:move() 作用 和 移动语义后 右值行为,unique_ptr的"移动"操作问题

    unique_ptr 不能进行赋值操作,但是可以有返回unique_ptr的函数,由此产生的问题: 结论1:std:move() 只是将一个实参强行转换为右值引用. 我们知道对象初始化时有 构造函数, ...