总结【GetHub的WebAPI,ASSET_ID】,【Linux的jq命令】(草稿版+实际操作)

目录

1.介绍一下github中的 asset_id

2. GitHub 的 asset_id相关操作

2.1.获取特定 repository 的 release 列表:

2.2.获取特定 release 中的 asset 列表,并找到 asset_id:

2.3.使用ASSET_ID获取资材

3.返回的 assets 的信息 是什么样样子的,请给出一个数据的例子

4.介绍一下 Linux 中 的 jq 命令

5.举一个例子( jq 命令)

========↑【草稿】整理,↓ 【实际操作】整理========

6.获取的数据结构

7.使用【jq】命令提取数据

7.1.提取 RELEASE_ID

7.2.提取 ASSET_ID

8.使用AssetId获取资源文件 (★★★最终目的★★★)

■其他

1.github连接超时解决办法

2.Jenkins内置变量

3.Jenkins的Git插件,内置变量

4.jq命令详解

5.是否必须注册用户才能使用------不用

6.GitHub WebAPI使用帮助文档

7.关于请求头【-H "Accept:application/octet-stream" 】

8.关于请求头【accept:application/vnd.githubv3.raw】 

9.curl中的参数【curl -k -sS -L 】

介绍一下 curl 中 ,参数 -s

介绍一下 curl 中 ,参数 -S

介绍一下 curl 中 ,参数 -L

10.请求头 -H "Authorization: token YOUR_ACCESS_TOKEN" 和 -u 认证的区别

11.请求头 -H "Authorization: token YOUR_ACCESS_TOKEN" 和 -u "UserID:tokenID"

12.请求头 -H "Authorization: token YOUR_ACCESS_TOKEN" 不需要指定用户吗


===

1.介绍一下github中的 asset_id

在 GitHub 中,asset_id 是与 release assets(发布的资源文件)相关联的唯一标识符。当您在 GitHub 上发布一个 release(版本发布)时,您可以附带一个或多个资源文件(如二进制文件、文档、压缩包等),这些资源文件会被称为 release assets。每个发布的资源文件都会被分配一个唯一的 asset_id,用来标识该资源文件。

---

通过 asset_id,您可以在 GitHub API 中准确定位和操作特定的发布资源文件。一般来说,您可以使用 asset_id 来下载、删除、更新或获取有关特定发布资源文件的详细信息。

---

在 GitHub Release API 的响应中,您会看到针对每个发布资源文件的 asset_id,这使得在开发人员和项目中对发布的资源文件进行管理和操作变得更加灵活和方便。

2. GitHub 的 asset_id相关操作

2.1.获取特定 repository 的 release 列表:

curl -H "Authorization: token YOUR_ACCESS_TOKEN" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/{owner}/{repo}/releases

YOUR_ACCESS_TOKEN 替换为您的 GitHub 访问令牌,{owner} 替换为 repository 的所有者名称,{repo} 替换为 repository 的名称。此命令将返回指定 repository 的所有 release 信息,包括每个 release 的 asset_id。

2.2.获取特定 release 中的 asset 列表,并找到 asset_id:

curl -H "Authorization: token YOUR_ACCESS_TOKEN" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/{owner}/{repo}/releases/{release_id}/assets

此命令将返回指定 release 中的所有 assets 的信息,包括它们的 asset_id。

----------------

请注意,为了成功调用 GitHub 的 Web API,您需要正确的访问令牌以及适当的权限。确保在命令中正确替换您的访问令牌和相关信息,并根据您的需求进行进一步的处理

===

2.3.使用ASSET_ID获取资材

发布资产的 REST API 终结点 - GitHub 文档

curl -L \-H "Accept: application/vnd.github+json" \-H "Authorization: Bearer <YOUR-TOKEN>" \-H "X-GitHub-Api-Version: 2022-11-28" \https://api.github.com/repos/OWNER/REPO/releases/assets/ASSET_ID

====

{
  "url": "https://api.github.com/repos/octocat/Hello-World/releases/assets/1",
  "browser_download_url": "https://github.com/octocat/Hello-World/releases/download/v1.0.0/example.zip",
  "id": 1,
  "node_id": "MDEyOlJlbGVhc2VBc3NldDE=",
  "name": "example.zip",
  "label": "short description",
  "state": "uploaded",
  "content_type": "application/zip",
  "size": 1024,
  "download_count": 42,
  "created_at": "2013-02-27T19:35:32Z",
  "updated_at": "2013-02-27T19:35:32Z",
  "uploader": {
    "login": "octocat",
    "id": 1,
    "node_id": "MDQ6VXNlcjE=",
    "avatar_url": "https://github.com/images/error/octocat_happy.gif",
    "gravatar_id": "",
    "url": "https://api.github.com/users/octocat",
    "html_url": "https://github.com/octocat",
    "followers_url": "https://api.github.com/users/octocat/followers",
    "following_url": "https://api.github.com/users/octocat/following{/other_user}",
    "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
    "organizations_url": "https://api.github.com/users/octocat/orgs",
    "repos_url": "https://api.github.com/users/octocat/repos",
    "events_url": "https://api.github.com/users/octocat/events{/privacy}",
    "received_events_url": "https://api.github.com/users/octocat/received_events",
    "type": "User",
    "site_admin": false
  }
}

===

curl -k -sS -L \-H "Accept: application/vnd.github+json" \-H "Authorization: Bearer <YOUR-TOKEN>" \-H "X-GitHub-Api-Version: 2022-11-28" \https://api.github.com/repos/OWNER/REPO/releases/assets/ASSET_ID \-o \Work\AAA\

===

3.返回的 assets 的信息 是什么样样子的,请给出一个数据的例子

{"id": 123456,"name": "example-release","assets": [{"name": "example-asset1","download_url": "https://github.com/user/repo/releases/download/v1.0/example-asset1.zip","content_type": "application/zip","size": 1024},{"name": "example-asset2","download_url": "https://github.com/user/repo/releases/download/v1.0/example-asset2.tar.gz","content_type": "application/gzip","size": 2048}]
}

在这个示例中,每个 asset 都有 name, download_url, content_type, size 等字段。您可以使用 jq 命令来提取这些字段,例如提取第一个 asset 的 namedownload_url

cat response.json | jq '.assets[0] | {name, download_url}'

这将输出第一个 asset 的 namedownload_url 字段内容。您可以根据需要适配提取其他字段。希望这个示例能够帮助您更好地处理您的数据。如果您有任何问题或需要进一步助,请随时告诉我。

===

4.介绍一下 Linux 中 的 jq 命令

jq是一个强大的命令行工具,用于处理JSON格式的数据。它可以读取、过滤、排序和转换JSON数据,并提供了丰富的操作选项和函数。

jq的基本语法如下: jq [options] 'filter' [file...]

其中,options是一些命令行选项,filter是一个用于处理JSON数据的jq过滤器,可以是一个表达式、函数或由多个过滤器组成的复合表达式,file是一个包含JSON数据的文件。

jq的功能包括但不限于以下几个方面:

  1. 选择和过滤:使用jq可以选择和过滤JSON数据中的特定字段或元素,例如提取某个字段的值、选择特定的数组元素等。
  2. 修改和更新:jq可以在原始JSON数据上进行修改和更新操作,例如添加、删除、修改字段等。
  3. 转换和格式化:jq可以将JSON数据转换为其他格式,例如转换为文本、CSV或XML。
  4. 聚合和统计:jq可以对JSON数据进行聚合和统计操作,例如求和、计数、最值等。
  5. 迭代和循环:jq支持迭代和循环操作,可以对JSON数据进行递归处理。
  6. 表达式和函数:jq提供了丰富的内置表达式和函数,可以进行逻辑运算、算术运算、正则表达式匹配等操作。

总而言之,jq是Linux中一个非常实用的工具,用于处理和操作JSON格式的数据。它简单易用,功能强大,对于处理和分析JSON数据非常有帮助。

5.举一个例子( jq 命令)

假设有一个包含JSON数据的文件data.json如下所示:

{"name": "Alice","age": 30,"city": "New York","pets": [{"name": "Fluffy","type": "cat"},{"name": "Buddy","type": "dog"}]
}

我们可以使用jq来处理这个JSON数据,例如提取name字段和pets数组中每个宠物的name字段,可以使用以下命令:

cat data.json | jq '{name, pets: [.pets[] | {name: .name}]}' 

运行上面的命令后,可以得到如下输出:

{"name": "Alice","pets": [{"name": "Fluffy"},{"name": "Buddy"}]
}

这个例子演示了如何使用jq命令选择和转换JSON数据中的特定字段,可以根据具体需求编写不同的jq过滤器来处理JSON数据。

===

========↑【草稿】整理,↓ 【实际操作】整理========

------------------------------------------------

6.获取的数据结构

【命令】(仅仅是单位的项目的GitHub,OK)

curl -k  -u "UserID:tokenID" "https://github.com/api/v3/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE"

【命令OK】(【全世界使用的】GitHub)

curl -k  -u "UserID:tokenID" "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE"

===

【要获取的Tags的地址】

https://github.com/terasoluna-batch/terasoluna-batch/releases/tag/3.6.5.RELEASE

Tags · terasoluna-batch/terasoluna-batch (github.com)

===

Release 3.6.5.RELEASE · terasoluna-batch/terasoluna-batch (github.com)

===蓝色是 RELEASE_ID

红色是 ASSET_ID

{
  "url": "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/16942929",
  "assets_url": "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/16942929/assets",
  "upload_url": "https://uploads.github.com/repos/terasoluna-batch/terasoluna-batch/releases/16942929/assets{?name,label}",
  "html_url": "https://github.com/terasoluna-batch/terasoluna-batch/releases/tag/3.6.5.RELEASE",
  "id": 16942929,
  "author": {
    "login": "kominen",
    "id": 11765662,
    "node_id": "MDQ6VXNlcjExNzY1NjYy",
    "avatar_url": "https://avatars.githubusercontent.com/u/11765662?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/kominen",
    "html_url": "https://github.com/kominen",
    "followers_url": "https://api.github.com/users/kominen/followers",
    "following_url": "https://api.github.com/users/kominen/following{/other_user}",
    "gists_url": "https://api.github.com/users/kominen/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/kominen/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/kominen/subscriptions",
    "organizations_url": "https://api.github.com/users/kominen/orgs",
    "repos_url": "https://api.github.com/users/kominen/repos",
    "events_url": "https://api.github.com/users/kominen/events{/privacy}",
    "received_events_url": "https://api.github.com/users/kominen/received_events",
    "type": "User",
    "site_admin": false
  },
  "node_id": "MDc6UmVsZWFzZTE2OTQyOTI5",
  "tag_name": "3.6.5.RELEASE",
  "target_commitish": "release/3.6.5.RELEASE",
  "name": "3.6.5.RELEASE",
  "draft": false,
  "prerelease": false,
  "created_at": "2019-04-23T08:14:09Z",
  "published_at": "2019-04-24T09:16:46Z",
  "assets": [
    {
      "url": "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/assets/12210663",
      "id": 12210663,
      "node_id": "MDEyOlJlbGVhc2VBc3NldDEyMjEwNjYz",
      "name": "terasoluna-batch-blank-3.6.5.RELEASE.zip",
      "label": null,
      "uploader": {
        "login": "kominen",
        "id": 11765662,
        "node_id": "MDQ6VXNlcjExNzY1NjYy",
        "avatar_url": "https://avatars.githubusercontent.com/u/11765662?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kominen",
        "html_url": "https://github.com/kominen",
        "followers_url": "https://api.github.com/users/kominen/followers",
        "following_url": "https://api.github.com/users/kominen/following{/other_user}",
        "gists_url": "https://api.github.com/users/kominen/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/kominen/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/kominen/subscriptions",
        "organizations_url": "https://api.github.com/users/kominen/orgs",
        "repos_url": "https://api.github.com/users/kominen/repos",
        "events_url": "https://api.github.com/users/kominen/events{/privacy}",
        "received_events_url": "https://api.github.com/users/kominen/received_events",
        "type": "User",
        "site_admin": false
      },
      "content_type": "application/x-zip-compressed",
      "state": "uploaded",
      "size": 38201,
      "download_count": 311,
      "created_at": "2019-04-24T09:14:17Z",
      "updated_at": "2019-04-24T09:14:19Z",
      "browser_download_url": "https://github.com/terasoluna-batch/terasoluna-batch/releases/download/3.6.5.RELEASE/terasoluna-batch-blank-3.6.5.RELEASE.zip"
    }
  ],
  "tarball_url": "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/tarball/3.6.5.RELEASE",
  "zipball_url": "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/zipball/3.6.5.RELEASE",
  "body": "## 資材\r\n* [terasoluna-batch-3.6.5.RELEASE.zip](https://github.com/terasoluna-batch/terasoluna-batch/archive/3.6.5.RELEASE.zip)\r\n  * TERASOLUNA Batch Framework for Java 本体 ソースプロジェクト\r\n* [terasoluna-batch-blank-3.6.5.RELEASE.zip](https://github.com/terasoluna-batch/terasoluna-batch/releases/download/3.6.5.RELEASE/terasoluna-batch-blank-3.6.5.RELEASE.zip)\r\n  * ブランクプロジェクト\r\n\r\nその他の資材は過去バージョンを参照ください。"
}

===

====

7.使用【jq】命令提取数据

7.1.提取 RELEASE_ID

curl -k  "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE" | jq '{id}'

7.2.提取 ASSET_ID

Step1

curl -k  "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE" | jq '{id, assets}'

Step1 (方法2)

curl -k "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE" | jq .assets[]

Step2(方法2)

curl -k "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE" | jq .assets[0].id

---注意,等于号后面不能有空格

myAssetsId=`curl -k "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE" | jq .assets[0].i
d`

echo $myAssetsId

xxx

8.使用AssetId获取资源文件 (★★★最终目的★★★)

×

curl -k -sS -L  "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/assets/12210663" -o /Work/github/365.zip

〇:需要加上请求头信息【-H "Accept:application/octet-stream"】

curl -k -sS -L -H "Accept:application/octet-stream"  "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/assets/12210663" -o /Work/github/365.zip

====



===

xxx

===获取文件的MD5值

777061abbbf22bab09083afbf53dc748

===下载到本地,使用 powershell取得的值是一样的。

Get-FileHash .\terasoluna-batch-blank-3.6.5.RELEASE.zip

======

■其他

1.github连接超时解决办法

打卡下面目录中的【hosts】文件 (要是有管理员权限打卡)

C:\Windows\System32\drivers\etc\

在文件中添加下面内容

140.82.113.3 github.com

xxx

2.Jenkins内置变量

变量名解释
BUILD_NUMBERThe current build number, such as "153"
BUILD_IDThe current build ID, identical to BUILD_NUMBER for builds created in 1.597+, but a YYYY-MM-DD_hh-mm-ss timestamp for older builds
BUILD_DISPLAY_NAMEThe display name of the current build, which is something like "#153" by default.
JOB_NAMEName of the project of this build, such as "foo" or "foo/bar". (To strip off folder paths from a Bourne shell script, try: ${JOB_NAME##*/})
BUILD_TAGString of "jenkins-${JOB_NAME}-${BUILD_NUMBER}". Convenient to put into a resource file, a jar file, etc for easier identification.
EXECUTOR_NUMBERThe unique number that identifies the current executor (among executors of the same machine) that’s carrying out this build. This is the number you see in the "build executor status", except that the number starts from 0, not 1.
NODE_NAMEName of the slave if the build is on a slave, or "master" if run on master
NODE_LABELSWhitespace-separated list of labels that the node is assigned.
WORKSPACEThe absolute path of the directory assigned to the build as a workspace.
JENKINS_HOMEThe absolute path of the directory assigned on the master node for Jenkins to store data.
JENKINS_URLFull URL of Jenkins, like http://server:port/jenkins/ (note: only available if Jenkins URL set in system configuration)
BUILD_URLFull URL of this build, like http://server:port/jenkins/job/foo/15/ (Jenkins URL must be set)
SVN_REVISIONSubversion revision number that's currently checked out to the workspace, such as "12345"
SVN_URLSubversion URL that's currently checked out to the workspace.
JOB_URLFull URL of this job, like http://server:port/jenkins/job/foo/ (Jenkins URL must be set)

==

3.Jenkins的Git插件,内置变量

GIT_COMMIT –对当前Git提交的安全哈希算法(SHA)的引用
GIT_COMMITTER_NAME或GIT_AUTHOR_NAME –发出新的Git提交时使用的名称
GIT_COMMITTER_EMAIL或GIT_AUTHOR_EMAIL –发出新的Git提交时使用的电子邮件地址
GIT_URL –远程GIT存储库的基本名称
GIT_URL_N –如果您使用多个远程Git存储库(即n个Git存储库),它将以数字方式列出所有它们
GIT_BRANCH – Jenkins Git插件正在运行的当前Git分支的名称
GIT_LOCAL_BRANCH –选择“检出到特定本地分支” Jenkins Git插件选项时,本地Git分支的名称
GIT_PREVIOUS_COMMIT –当前分支上的先前提交的ID
GIT_PREVIOUS_S

xxx

4.jq命令详解

shell编程-jq命令详解_shell jq命令-CSDN博客

========================

5.是否必须注册用户才能使用------不用

curl -k  "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE"

---

curl -k  "https://api.github.com/repos/terasoluna-batch/terasoluna-batch/releases/tags/3.6.5.RELEASE" | jq .assets[0].id

===

6.GitHub WebAPI使用帮助文档

发布资产的 REST API 终结点 - GitHub 文档

===“Get a release asset”的示例代码

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/releases/assets/ASSET_ID

====“Update a release asset”的示例代码

curl -L \
  -X PATCH \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/releases/assets/ASSET_ID \
  -d '{"name":"foo-1.0.0-osx.zip","label":"Mac binary"}'

======“Upload a release asset”的示例代码

curl -L \
  -X POST \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  -H "Content-Type: application/octet-stream" \
  "https://uploads.github.com/repos/OWNER/REPO/releases/RELEASE_ID/assets?name=example.zip" \
  --data-binary "@example.zip"

====

7.关于请求头【-H "Accept:application/octet-stream" 】

请求头 -H "Accept:application/octet-stream" 是什么含义

这是一个HTTP请求头,其中Accept字段用于指定客户端请求的预期响应资源的类型。application/octet-stream表示客户端期望返回的响应类型为二进制流数据。这种类型的响应通常是不可读的,因为它们不是用来显示的文本或图像,而是用于传输文件或二进制数据。这个请求头主要用于文件下载或二进制数据请求等场景。

既然是二进制流,为什么其中要使用 octet 这个单词,这个单词不是8进制的含义吗

是的,"octet"这个单词最初是指8位字节,因为计算机中的一组8个连续的二进制位被称为一个字节,因此八个二进制位组成的字节也被称为八元组(octet)。 在Internet标准协议中,"octet"已经成为二进制数据代码中的标准术语,它表示任何8位的二进制数据单元。虽然你可以使用Content-Type: application/octet-stream对文本文件进行传输,但不推荐。因为Content-Type头字段实际上并没有包含任何信息,指示接收端如何进行解析响应,而是表示一种通用的二进制数据类型。

二进制,八进制,十进制,16进制的单词

  1. 二进制:binary
  2. 八进制:octal
  3. 十进制:decimal
  4. 十六进制:hexadecimal

octet英文的含义是什么

octet一词源自法语,意指"八位字节",在计算机科学领域中通常表示由8位组成的数据单元,也称为字节。在网络领域中,octet常用于表示IP地址或作为数据传输的标准单位。

8.关于请求头【accept:application/vnd.githubv3.raw】 

"Accept: application/vnd.githubv3.raw" 是一个HTTP请求头字段,用于告诉服务器我们想要接收的响应内容的格式。在这种情况下,它告诉服务器我们要求返回的内容是以Github API v3的原始格式(即裸文格式)。

-------

Github API v3允许开发者通过发送HTTP请求来与Github进行交互,并获得相关资源的响应。"Accept: application/vnd.githubv3.raw"则是一种特定格式的请求头,它通常用于请求以原始、未经解析的方式获取Github上的文件内容。这种格式可以让开发者在接收到响应后自行处理和解析文件内容。

===

"vnd" 是 "vnd." 的缩写,全称是 "Vendor"(供应商)的缩写。在Internet媒体类型(MIME)中,vnd被用作自定义媒体类型的标识。自定义媒体类型是指由特定厂商或组织定义和使用的专有格式。例如,在Github API中,vnd用于标识特定的媒体类型,如 "application/vnd.github.v3+json"和 "application/vnd.github.v3.raw",这些媒体类型仅适用于Github API的请求或响应。因此,使用自定义的媒体类型可以帮助区分使用不同API的请求和响应,使得计算机程序能够更加准确地处理不同类型的数据。

===

9.curl中的参数【curl -k -sS -L 】

介绍一下 curl 中 ,参数 -s

在curl命令中,参数-s或--silent通常用来禁止或隐藏进度条或错误消息的输出,使curl在静默模式下运行。使用-s参数后,curl执行请求时不会显示下载或上传进度,并且不会显示任何错误信息。这在需要在脚本或批处理文件中运行curl命令时很有用,可以使输出更加清晰和简洁。

即,下面信息不会显示

介绍一下 curl 中 ,参数 -S

在curl命令中,参数-S或--show-error用于在发生错误时显示错误信息。默认情况下,curl会将错误消息输出到标准错误流中,但使用-S参数会将错误消息作为正常的输出信息显示,这可以更好地帮助用户了解发生了什么错误。这在调试和追踪问题时非常有用。

介绍一下 curl 中 ,参数 -L

在curl命令中,参数-L或--location用于让curl自动跟随重定向,即如果请求返回的HTTP状态码是重定向代码(如301或302),curl会自动再次发送请求到重定向的地址。这使得curl能够处理服务器端重定向,无需手动处理重定向。使用-L参数可以简化对包含重定向的URL的请求处理过程。

xxx

====

10.请求头 -H "Authorization: token YOUR_ACCESS_TOKEN" 和 -u 认证的区别

请求头中的 -H "Authorization: token YOUR_ACCESS_TOKEN"-u 认证是两种不同的身份验证方式,它们之间有几个关键区别:

  1. Authorization 头部 vs -u 参数

    • -H "Authorization: token YOUR_ACCESS_TOKEN" 是通过在 HTTP 请求头部中发送身份验证信息(如 Access Token)进行身份验证的方式。
    • -u username:password 则是通过在 URL 中使用基本认证的方式进行身份验证,其中包含用户名和密码,并且会以 base64 编码方式发送。
  2. 安全性

    • 使用 Authorization 请求头传递令牌通常被认为比在 URL 中传递明文的用户名和密码更安全。因为在使用基本认证时,用户名和密码会以 base64 编码形式在 URL 中传输,存在被窃取或中间人攻击的风险。
  3. Flexibility(灵活性)

    • 使用 Authorization 头部更加灵活,可以支持不同类型的身份验证(如 Bearer Token、API Key 等),并且可以符合不同的协议和规范。
    • 使用 -u 参数通常用于基本认证,适用于需要用户名和密码的基本身份,虽然两种身份验证方式都可以用来进行身份验证,但根常推荐使用 Authorization 头部与令

==

11.请求头 -H "Authorization: token YOUR_ACCESS_TOKEN" 和 -u "UserID:tokenID"

请求头 -H "Authorization: token YOUR_ACCESS_TOKEN" 和 -u UserID:tokenID 都是用于提供身份验证信息,但实现方式略有不同:

  1. -H "Authorization: token YOUR_ACCESS_TOKEN":此请求头是在 HTTP 请求头中设置一个 Authorization 字段,将 YOUR_ACCESS_TOKEN 作为 token 标识符发送到服务器来验证用户身份。此方式通常用于 REST API,Bearer Token 验证模式是其常见用例之一。
  2. -u UserID:tokenID:此身份验证方法是通过将 UserID 与 tokenID 封装在 URL 文件中的“用户信息”部分进行身份验证。此方式通常称为基本身份验证,通常会在临时测试或快速身份验证的情况下使用,并不是非常安全。

因此,建议在相对安全的环境中和更灵活的身份验证方式中使用 -H "Authorization: token YOUR_ACCESS_TOKEN",而在执行一些短期或基本验证需求时,使用 -u UserID:tokenID 会更加方便。最后,在使用任何项目使用身份验证之前,请务必明确其安全性和适应环节。

12.请求头 -H "Authorization: token YOUR_ACCESS_TOKEN" 不需要指定用户吗

是的,如果使用-H "Authorization: token YOUR_ACCESS_TOKEN"这种方式进行身份验证,则不需要指定具体的用户。当你向服务器发送请求时,YOUR_ACCESS_TOKEN将被作为标识符发送到服务器,用于验证你的身份。一旦服务器确认了你的身份,就可以访问你所请求的资源或执行操作。

使用这种方法进行身份验证通常更加灵活,因为你可以通过使用唯一的访问令牌来代表用户(无需暴露真实用户身份)。 此外,使用访问令牌还可以跨设备或应用程序访问资源,而不必关心用户如何登录授权。

==

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32CubeIDE -使用-调试过程中-遇到的“弹窗”报错问题-部分总结-处理方式】

【STM32CubeIDE -使用-调试过程中-遇到的“弹窗”报错问题-部分总结-处理方式】 1、前言2、软件环境问题1&#xff1a;Confirm Perspective Switch&#xff08;确认视角切换&#xff09;&#xff08;1&#xff09;问题描述:This kind of launch is configured to open the Debu…

14、modbus poll 使用教程小记1

开发平台&#xff1a;Win10 64位 Modbus Slave版本&#xff1a;64位 7.0.0 Modbus Poll版本&#xff1a;64位 7.2.2 因为项目中经常会用到modbus协议&#xff0c;所以就避免不了的要使用modbus测试工具&#xff0c;Modbus Slave/Poll无疑是众多测试工具中应用最广泛的。 文章目…

C语言的数据结构:串、数组、广义表

一、串 1、串的定义 串是一个线性表&#xff0c;但其节点中的内容只能为字符&#xff0c;所以也称为字符串。 字符串中可以有多个字符&#xff0c;也可以没有字符。没有字符的叫作&#xff1a;空串。 空串&#xff1a;""。 有值的串&#xff1a;"1123"。 只…

yolov3 详解

文章目录 1、yolov3原理2、损失函数3、yolov3改进4、使用opencv实现yolov35、卷积神经网络工作原理 1、yolov3原理 参考视频 darknet53&#xff1a;52个卷积层和1个全联接层 输入图像为416416 1313 -》 下采样32倍 2626 -》 下采样16倍 5252 -》 下采样8倍 由标注框中心点落在…

13600KF+3060Ti,虚拟机安装macOS 14,2024年6月

距离上次装macOS虚拟机已经有一段时间了&#xff0c;macOS系统现在大版本升级的速度也是越来越快了&#xff0c;由于Office只支持最新三个版本的macOS&#xff0c;所以现在保底也得安装macOS 12了&#xff0c;我这次是用macOS 14做实验&#xff0c;13和12的安装方式和macOS 14一…

eNSP学习——PPP的认证

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置PPP的PAP认证 4、配置PPP的CHAP认证 主要命令 //设置本端的PPP协议对对端设备的认证方式为 PAP&#xff0c;认证采用的域名为huawei [R3]int s4/0/0 [R…

Android 14 系统启动流程 之 启动init进程、启动Zygote进程

Android 14 系统启动流程 之 启动init进程、启动Zygote进程 废话不多说&#xff0c;先上图&#xff0c;不清楚的可以在评论区留言。

【论文阅读】-- 时态合并树状图:时态标量数据的基于拓扑的静态可视化

时态合并树状图&#xff1a;时态标量数据的基于拓扑的静态可视化 摘要1 引言2 相关工作及背景介绍2.1 增广合并树2.2 (增强)合并树的可视化与跟踪2.3 特征跟踪2.4 数据线性化 3 时间合并树状图3.1 映射单个时间步长&#xff1a; R d → R R^d \rightarrow R Rd→R3.2 映射所有时…

python:faces swap

# encoding: utf-8 # 版权所有 2024 涂聚文有限公司 # 许可信息查看&#xff1a;pip install boost # 描述&#xff1a;pip install boost # pip install dlib # pip install cmake3.25.2 # pip install dlib19.24.2 如果安装不上&#xff0c;按此法 # Author : geovindu,G…

实用软件下载:MathType最新安装包及详细安装教程

MathType是强大的数学公式编辑器&#xff0c;与常见的文字处理软件和演示程序配合使用&#xff0c;能够在各种文档中加入复杂的数学公式和符号&#xff0c;可用在编辑数学试卷、书籍、报刊、论文、幻灯演示等方面&#xff0c;是编辑数学资料的得力工具。MathType与常见文字处理…

【乐吾乐2D可视化组态编辑器】条件变化,触发告警动画

条件触发告警动画 乐吾乐2D可视化组态编辑器地址&#xff1a;https://2d.le5le.com/ 如图所示&#xff0c;左侧文本图元数值一直在变化&#xff0c;当数值大于等于50的时候&#xff0c;右侧矩形图元执行告警动画&#xff0c;当数值小于50的时候&#xff0c;右侧图元恢复正常。…

【Spring EL<二>✈️✈️ 】SL 表达式结合 AOP 注解实现鉴权

目录 &#x1f37b;前言 &#x1f378;一、鉴权&#xff08;Authorization&#xff09; &#x1f37a;二、功能实现 2.1 环境准备 2.2 代码实现 2.3 测试接口 &#x1f379;三、测试功能 3.1 传递 admin 请求 ​ 3.2 传递普通 user 请求 &#x1f37b;四、章末 &a…

Arduino 项目:太阳能跟踪器

在本文中&#xff0c;您将逐步学习如何使用 光敏电阻和舵机制作双轴太阳能跟踪器 Arduino 项目。在这个项目中&#xff0c;我们将使用一些光敏传感器来跟踪阳光&#xff0c;并将利用舵机将太阳能电池板引导到可提高其效率的区域。 此项目所需的组件 序号部件名称描述数量备注…

Excel根据身份证号提取信息

概览 本篇文章主要对根据身份证号码提取出生年月日、年龄、性别、退休年龄这三项进行讲解。 一. 提取出生年月日 公式&#xff1a;TEXT(MID(B2,7,8),“0000-00-00”) MID(B2,7,8)&#xff1a;表示从单元格 B2 中的字符串&#xff08;这里是身份证号&#xff09;&#xff0c…

《web应用技术》第十一次作业

1、验证过滤器进行权限验证的原理。 代码展示&#xff1a; Slf4j WebFilter(urlPatterns "/*") public class LoginCheckFilter implements Filter { Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) thro…

Java高级技术探索:深入理解JVM内存分区与GC机制

文章目录 引言JVM内存分区概览垃圾回收机制&#xff08;GC&#xff09;GC算法基础常见垃圾回收器ParNew /Serial old 收集器运行示意图 优化实践结语 引言 Java作为一门广泛应用于企业级开发的编程语言&#xff0c;其背后的Java虚拟机&#xff08;JVM&#xff09;扮演着至关重…

html的网页制作代码分享

<!-- prj_8_2.html --> <!DOCTYPE html> <html lang "EN"><head><meta charset"utf-8" /><title>页面布局设计</title><style type "text/css">*{padding: 0px;margin:0px;}#header{back…

Web端在线/离线Stomp服务测试与WebSocket服务测试

Stomp服务测试 支持连接、发送、订阅、接收&#xff0c;可设置请求头、自动重连 低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/preview/lxbho9lkzvgc 演练页面&#xff1a;http://www.da…

11_从注意力机制到序列处理的革命:Transformer原理详解

1.1 简介 Transformer是一种深度学习模型&#xff0c;主要用于处理序列数据&#xff0c;尤其是自然语言处理任务&#xff0c;如机器翻译、文本摘要等。该模型由Vaswani等人在2017年的论文《Attention is All You Need》中首次提出&#xff0c;它的出现极大地推动了自然语言处理…

【推荐算法的评估与调试】离线评估+在线A/B Test

文章目录 1、离线评估1.1、评估排序算法1.1.1、AUC和GAUC1.1.2、NDCG 1.2、评估召回算法1.2.1、Precision&Recall1.2.2、MAP1.2.3、Hit Rate1.2.4、持续评估 2、在线评估2.1、线上&#xff1a;流量划分2.1.1、根据User ID划分流量2.1.2、分层重叠划分流量2.1.3、A/A实验的重…