使用 bash 脚本将未序列化和未转义的 HTML 文件数据发送到 API
Send unserialized & unescaped HTML file data to an API with a bash script
我想创建一个 bash 脚本,它接收一个 HTML 文件并将其发送到多个 API 中。
我有一个 test.html
文件,其中包含未序列化的 HTML 数据,如下所示:
<h2 id="overview">Overview</h2>
<p>Have the source of truth in your own space at <strong>somewhere</strong></p>
<pre>
<code class="lang-javascript">function go() {
console.log('code blocks can be a pain');
}
go();
</code>
</pre>
我需要以某种方式将文件的内容发送到 API,如下所示:
curl --location --request POST 'https://devo.to/api/articles' \
--header 'api-key: askldjfalefjw02ijef02eifj20' \
--header 'Content-Type: application/json' \
--data-raw '{
"article": {
"title": "Blog Article",
"body_markdown": "@test.html",
}
}'
到目前为止我能想到的唯一方法是 serialize/escape HTML 文件,将其作为字符串读入变量(如 $TEST_HTML=$(cat serialized_test.html
),然后将其传递至 "body_markdown"
.
是否可以在 bash 脚本中一步 serialize/escape HTML 或者是否有更好的方法?
我将使用 jq
来构建 JSON 参数,并让它在包含的 HTML 文件中正确处理转义引号、换行符等:
curl --location --request POST 'https://devo.to/api/articles' \
--header 'api-key: askldjfalefjw02ijef02eifj20' \
--header 'Content-Type: application/json' \
--data-raw "$(jq -n --arg html "$(< test.html)" '{article:{title:"Blog Article",body_markdown:$html}}')"
jq
调用将 test.html
的内容放入字符串变量 $html
中,计算结果为:
{
"article": {
"title": "Blog Article",
"body_markdown": "<h2 id=\"overview\">Overview</h2>\n<p>Have the source of truth in your own space at <strong>somewhere</strong></p>\n<pre>\n<code class=\"lang-javascript\">function go() {\n console.log('code blocks can be a pain');\n}\ngo();\n</code>\n</pre>"
}
}
$(< filename)
是一个 bash
替换,计算给定文件的内容。它比 bash
中的 $(cat filename)
更受欢迎,因为它不涉及 运行 另一个过程。
我想创建一个 bash 脚本,它接收一个 HTML 文件并将其发送到多个 API 中。
我有一个 test.html
文件,其中包含未序列化的 HTML 数据,如下所示:
<h2 id="overview">Overview</h2>
<p>Have the source of truth in your own space at <strong>somewhere</strong></p>
<pre>
<code class="lang-javascript">function go() {
console.log('code blocks can be a pain');
}
go();
</code>
</pre>
我需要以某种方式将文件的内容发送到 API,如下所示:
curl --location --request POST 'https://devo.to/api/articles' \
--header 'api-key: askldjfalefjw02ijef02eifj20' \
--header 'Content-Type: application/json' \
--data-raw '{
"article": {
"title": "Blog Article",
"body_markdown": "@test.html",
}
}'
到目前为止我能想到的唯一方法是 serialize/escape HTML 文件,将其作为字符串读入变量(如 $TEST_HTML=$(cat serialized_test.html
),然后将其传递至 "body_markdown"
.
是否可以在 bash 脚本中一步 serialize/escape HTML 或者是否有更好的方法?
我将使用 jq
来构建 JSON 参数,并让它在包含的 HTML 文件中正确处理转义引号、换行符等:
curl --location --request POST 'https://devo.to/api/articles' \
--header 'api-key: askldjfalefjw02ijef02eifj20' \
--header 'Content-Type: application/json' \
--data-raw "$(jq -n --arg html "$(< test.html)" '{article:{title:"Blog Article",body_markdown:$html}}')"
jq
调用将 test.html
的内容放入字符串变量 $html
中,计算结果为:
{
"article": {
"title": "Blog Article",
"body_markdown": "<h2 id=\"overview\">Overview</h2>\n<p>Have the source of truth in your own space at <strong>somewhere</strong></p>\n<pre>\n<code class=\"lang-javascript\">function go() {\n console.log('code blocks can be a pain');\n}\ngo();\n</code>\n</pre>"
}
}
$(< filename)
是一个 bash
替换,计算给定文件的内容。它比 bash
中的 $(cat filename)
更受欢迎,因为它不涉及 运行 另一个过程。