{"id":32478,"date":"2023-02-28T17:15:54","date_gmt":"2023-01-11T22:25:01","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/"},"modified":"2024-04-29T16:45:05","modified_gmt":"2024-04-29T08:45:05","slug":"%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/","title":{"rendered":"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u8fd9\u662f\u5728Raspberry Pi\u4e0a\u642d\u5efaNerves\uff0bPhoenix\u73af\u5883\u3002<\/p>\n<p>\u4e0a\u6b21\u7684Nerves\uff0bPhoenix 00\uff11<\/p>\n<p>\u672c\u6b21\u5c06\u4ece\u53ef\u80fd\u9047\u5230\u7684\u73af\u5883\u914d\u7f6e\u95ee\u9898\u5f00\u59cb\uff0c\u4e00\u76f4\u5230\u5728Nerves\u4e0a\u8fd0\u884c\u65f6\u7684\u5bc6\u94a5\u8bbe\u7f6e\u90fd\u8fdb\u884c\u8bf4\u660e\u3002<br \/>\n\u8bf7\u67e5\u770b\u672c\u6587\uff0c\u4ee5\u89e3\u51b3\u4e0a\u6b21\u65e0\u6cd5\u8fd0\u884c\u7684\u95ee\u9898\u3002<\/p>\n<h1>\u53ef\u4ee5\u53c2\u8003<\/h1>\n<p>asdf\u865a\u62df\u673a. \u7f51<br \/>\nGitHub asdf-node.js<\/p>\n<p>hexdocs.pm\/phoenix \u548c github.com nerves-project \u7684 phoenix-web-interfaces<\/p>\n<h1>\u73af\u5883<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">macOS<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">IEx 1.9.1 (compiled with Erlang\/OTP 22)<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">nerves_bootstrap-1.7.1<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">phoenix 1.4.16<\/ul>\n<h1>\u4e66\u7684\u5185\u5bb9\u8868<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">asdf\u3067node\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">phoenix\u3092\u6700\u65b0\u5316<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4e0b\u6e96\u5099<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u6574\u7406<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\uff08vintage_net\uff09\u306e\u8a2d\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u9375\u3092\u8a2d\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ed\u30fc\u30ab\u30eb\u3067Phoenix\u78ba\u8a8d<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">RaspberryPi3B\uff0bNerves\uff0bPhoenix\u3092\u78ba\u8a8d<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u307e\u3068\u3081<\/ul>\n<h1>\u5728asdf\u4e2d\u5b89\u88c5node\u3002<\/h1>\n<pre class=\"post-pre\"><code>#\u304a\u544a\u3052\u306e\u901a\u308a\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n$ brew install \\\r\n  coreutils automake autoconf openssl \\\r\n  libyaml readline libxslt libtool unixodbc \\\r\n  unzip curl\r\n\r\n$ brew install gpg\r\n\r\n$ asdf plugin-add nodejs https:\/\/github.com\/asdf-vm\/asdf-nodejs.git\r\n\r\n#\u3053\u3053\u3067\u30a8\u30e9\u30fc\u306b\u306a\u308b\u304b\u3082\r\n$ bash ~\/.asdf\/plugins\/nodejs\/bin\/import-release-team-keyring\r\n\r\nAuthenticity of checksum file can not be assured! Please be sure to check the README of asdf-nodejs in case you did not yet import the needed PGP keys. If you already did that then that is the point to become SUSPICIOUS! There must be a reason why this is failing. If you are installing an older NodeJS version you might need to import OpenPGP keys of previous release managers. Exiting.\r\n\r\n#\u30a8\u30e9\u30fc\u306b\u306a\u3063\u305f\u306e\u3067\u300cimport-release-team-keyring\u300d\u3092\u4fee\u6b63\r\nvi ~\/.asdf\/plugins\/nodejs\/bin\/import-release-team-keyring\r\n\r\n#\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\r\n#SERVERS=\"ha.pool.sks-keyservers.net\r\n#         p80.pool.sks-keyservers.net:80 \\\r\n#         ipv4.pool.sks-keyservers.net \\\r\n#         keyserver.ubuntu.com\r\n#         keyserver.ubuntu.com:80 \\\r\n#         pgp.mit.edu\r\n#         pgp.mit.edu:80\"\r\n\r\n#add\r\nSERVERS=\"ipv4.pool.sks-keyservers.net \\\r\n         pgp.mit.edu\"\r\n\r\n#node.js\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb(ver.\u63a8\u5968\u7248)\r\n$ asdf install nodejs 12.16.1\r\n\r\n#bash\u518d\u5b9f\u884c\r\nasdf global nodejs 12.16.1\r\n<\/code><\/pre>\n<h1>\u51c6\u5907\u5f00\u59cb<\/h1>\n<p>\u5c06Phoenix\u548cNerves\u66f4\u65b0\u5230\u6700\u65b0\u7248\u672c<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">#phoenix\u3092\u6700\u65b0\u5316<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">local<\/span><span class=\"o\">.<\/span><span class=\"n\">phx<\/span>\r\n<span class=\"n\">phx_new<\/span> <span class=\"mf\">1.4<\/span><span class=\"o\">.<\/span><span class=\"mi\">16<\/span>\r\n\r\n<span class=\"c1\">#phoenix\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304b\u3089\u306e\u65b9\u306f\u3053\u3061\u3089<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">archive<\/span><span class=\"o\">.<\/span><span class=\"n\">install<\/span> <span class=\"n\">hex<\/span> <span class=\"n\">phx_new<\/span> <span class=\"mf\">1.4<\/span><span class=\"o\">.<\/span><span class=\"mi\">16<\/span>\r\n\r\n<span class=\"c1\">#nerves\u3092\u6700\u65b0\u306b\uff08bootstrap\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u53e4\u3044\u3068\u6012\u3089\u308c\u308b\u306e\u3067\uff09<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">local<\/span><span class=\"o\">.<\/span><span class=\"n\">nerves<\/span>\r\n<span class=\"o\">*<\/span> <span class=\"n\">creating<\/span> <span class=\"o\">**\/.<\/span><span class=\"n\">asdf<\/span><span class=\"o\">\/<\/span><span class=\"n\">installs<\/span><span class=\"o\">\/<\/span><span class=\"n\">elixir<\/span><span class=\"o\">\/<\/span><span class=\"mf\">1.9<\/span><span class=\"o\">.<\/span><span class=\"mi\">1<\/span><span class=\"o\">-<\/span><span class=\"n\">otp<\/span><span class=\"o\">-<\/span><span class=\"mi\">22<\/span><span class=\"o\">\/.<\/span><span class=\"n\">mix<\/span><span class=\"o\">\/<\/span><span class=\"n\">archives<\/span><span class=\"o\">\/<\/span><span class=\"n\">nerves_bootstrap<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">1<\/span>\r\n\r\n<span class=\"c1\"># bootstrap\u306einstall\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f<\/span>\r\n<span class=\"n\">mix<\/span> <span class=\"n\">archive<\/span><span class=\"o\">.<\/span><span class=\"n\">install<\/span> <span class=\"n\">hex<\/span> <span class=\"n\">nerves_bootstrap<\/span>\r\n\r\n<\/code><\/pre>\n<h1>\u521b\u5efa\u9879\u76ee<\/h1>\n<p>\u76ee\u5f55\u7ed3\u6784\u5982\u4e0b\u6240\u793a\uff1a<br \/>\nExiNix<br \/>\n\u251c deviceio<br \/>\n\u2514 phxif<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">#\u89aa\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210<\/span>\r\n<span class=\"n\">mkdir<\/span> <span class=\"no\">ExiNix<\/span>\r\n<span class=\"n\">cd<\/span> <span class=\"no\">ExiNix<\/span>\r\n\r\n<span class=\"c1\">#RaspberryPi3\u3092\u30bf\u30fc\u30b2\u30c3\u30c8<\/span>\r\n<span class=\"n\">set<\/span> <span class=\"o\">-<\/span><span class=\"n\">x<\/span> <span class=\"no\">MIX_TARGET<\/span> <span class=\"n\">rpi3<\/span>\r\n\r\n<span class=\"c1\">#Nerves\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210<\/span>\r\n<span class=\"n\">mix<\/span> <span class=\"n\">nerves<\/span><span class=\"o\">.<\/span><span class=\"n\">new<\/span> <span class=\"n\">deviceio<\/span>  <span class=\"o\">--<\/span><span class=\"n\">nerves<\/span><span class=\"o\">-<\/span><span class=\"n\">pack<\/span>\r\n\r\n<span class=\"c1\">#phoenix\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u4f5c\u6210\uff08--no-webpack \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u4ed8\u3051\u306a\u3044\uff09<\/span>\r\n<span class=\"n\">mix<\/span> <span class=\"n\">phx<\/span><span class=\"o\">.<\/span><span class=\"n\">new<\/span> <span class=\"n\">phxif<\/span> <span class=\"o\">--<\/span><span class=\"n\">no<\/span><span class=\"o\">-<\/span><span class=\"n\">ecto<\/span>\r\n\r\n<span class=\"c1\">#\u3068\u308a\u3042\u3048\u305a\u30ed\u30fc\u30ab\u30eb\u3067\u52d5\u304f\u304b\u78ba\u8a8d<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">cd<\/span> <span class=\"n\">phxif<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">phx<\/span><span class=\"o\">.<\/span><span class=\"n\">server<\/span>\r\n<\/code><\/pre>\n<p>\u7528\u6d4f\u89c8\u5668\u8bbf\u95ee\u672c\u5730\u4e3b\u673a\u7684localhost:4000<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d121137434c4406bf5374\/20-0.png\" alt=\"nerves.local_.png\" \/><\/div>\n<h1>\u6574\u7406\u9879\u76ee\u7684\u4f9d\u8d56\u5173\u7cfb<\/h1>\n<p>\u672c\u6b21\u6211\u4eec\u5c06\u4f7f\u7528\u96e8\u62ab\u9879\u76ee\u7ed3\u6784\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\n<span class=\"c1\"># ...<\/span>\r\n  <span class=\"k\">defp<\/span> <span class=\"n\">deps<\/span> <span class=\"k\">do<\/span>\r\n    <span class=\"p\">[<\/span>\r\n      <span class=\"c1\"># Add<\/span>\r\n      <span class=\"p\">{<\/span><span class=\"ss\">:phxif<\/span><span class=\"p\">,<\/span> <span class=\"ss\">path:<\/span> <span class=\"s2\">\"..\/phxif\"<\/span><span class=\"p\">},<\/span>\r\n      <span class=\"c1\"># ...<\/span>\r\n    <span class=\"p\">]<\/span>\r\n  <span class=\"k\">end<\/span>\r\n<span class=\"c1\"># \u30fb\u30fb\u30fb<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>\r\n<span class=\"c1\"># Add\u3000\u4ee5\u4e0b\u3092\u8ffd\u8a18<\/span>\r\n<span class=\"n\">import_config<\/span> <span class=\"s2\">\"..\/..\/phxif\/config\/config.exs\"<\/span>\r\n<span class=\"n\">import_config<\/span> <span class=\"s2\">\"..\/..\/phxif\/config\/prod.exs\"<\/span>\r\n\r\n<span class=\"n\">config<\/span> <span class=\"ss\">:phxif<\/span><span class=\"p\">,<\/span> <span class=\"no\">PhxifWeb<\/span><span class=\"o\">.<\/span><span class=\"no\">Endpoint<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"c1\"># Nerves root filesystem is read-only, so disable the code reloader<\/span>\r\n  <span class=\"ss\">code_reloader:<\/span> <span class=\"no\">false<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"ss\">http:<\/span> <span class=\"p\">[<\/span><span class=\"ss\">port:<\/span> <span class=\"mi\">80<\/span><span class=\"p\">],<\/span>\r\n  <span class=\"c1\"># Use compile-time Mix config instead of runtime environment variables<\/span>\r\n  <span class=\"ss\">load_from_system_env:<\/span> <span class=\"no\">false<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"c1\"># Start the server since we're running in a release instead of through `mix`<\/span>\r\n  <span class=\"ss\">server:<\/span> <span class=\"no\">true<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"ss\">url:<\/span> <span class=\"p\">[<\/span><span class=\"ss\">host:<\/span> <span class=\"s2\">\"nerves.local\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">port:<\/span> <span class=\"mi\">80<\/span><span class=\"p\">]<\/span>\r\n<\/code><\/pre>\n<h1>\u7f51\u7edc\uff08vintage_net\uff09\u7684\u8bbe\u7f6e<\/h1>\n<pre class=\"post-pre\"><code>\r\n<span class=\"n\">config<\/span> <span class=\"ss\">:vintage_net<\/span><span class=\"p\">,<\/span>\r\n<span class=\"err\">\u3000<\/span><span class=\"c1\">#JP\u306b\u5909\u66f4<\/span>\r\n  <span class=\"ss\">regulatory_domain:<\/span> <span class=\"s2\">\"JP\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"ss\">config:<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span><span class=\"s2\">\"usb0\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">type:<\/span> <span class=\"no\">VintageNetDirect<\/span><span class=\"p\">}},<\/span>\r\n    <span class=\"p\">{<\/span><span class=\"s2\">\"eth0\"<\/span><span class=\"p\">,<\/span>\r\n     <span class=\"p\">%{<\/span>\r\n        <span class=\"ss\">type:<\/span> <span class=\"no\">VintageNetEthernet<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"ss\">ipv4:<\/span> <span class=\"p\">%{<\/span>\r\n          <span class=\"ss\">method:<\/span> <span class=\"ss\">:static<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"ss\">address:<\/span> <span class=\"s2\">\"192.168.***.***\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"ss\">prefix_length:<\/span> <span class=\"mi\">24<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span><span class=\"s2\">\"wlan0\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"p\">%{<\/span>\r\n        <span class=\"ss\">type:<\/span> <span class=\"no\">VintageNetWiFi<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"ss\">vintage_net_wifi:<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">networks:<\/span> <span class=\"p\">[%{<\/span><span class=\"ss\">key_mgmt:<\/span> <span class=\"ss\">:wpa_psk<\/span><span class=\"p\">,<\/span> <span class=\"ss\">ssid:<\/span> <span class=\"s2\">\"SSID\u3092\u8a18\u8f09\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">psk:<\/span> <span class=\"s2\">\"\u30d1\u30b9\u30ef\u30fc\u30c9\"<\/span><span class=\"p\">}]},<\/span>\r\n        <span class=\"ss\">ipv4:<\/span> <span class=\"p\">%{<\/span><span class=\"ss\">method:<\/span> <span class=\"ss\">:dhcp<\/span><span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">]<\/span>\r\n\r\n<\/code><\/pre>\n<h1>\u8bbe\u5b9a\u5bc6\u94a5<\/h1>\n<p>\u4ece\u5916\u90e8\u5bfc\u5165CSRF\u4ee4\u724c<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">#\u30fb\u30fb\u30fb<\/span>\r\n<span class=\"err\">\u3000<\/span><span class=\"c1\"># Add \u300cget_csrf_token: 0,\u300d\u3092\u8ffd\u52a0<\/span>\r\n<span class=\"err\">\u3000<\/span><span class=\"kn\">import<\/span> <span class=\"no\">Phoenix<\/span><span class=\"o\">.<\/span><span class=\"no\">Controller<\/span><span class=\"p\">,<\/span> <span class=\"ss\">only:<\/span> <span class=\"p\">[<\/span><span class=\"ss\">get_csrf_token:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"ss\">get_flash:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"ss\">get_flash:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"ss\">view_module:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\r\n\r\n<span class=\"c1\">#\u30fb\u30fb\u30fb<\/span>\r\n<\/code><\/pre>\n<p>\u751f\u6210\u548c\u8bbe\u7f6e\u5bc6\u94a5<\/p>\n<pre class=\"post-pre\"><code>\r\n<span class=\"err\">$<\/span> <span class=\"n\">cd<\/span> <span class=\"n\">phxif<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">deps<\/span><span class=\"o\">.<\/span><span class=\"n\">get<\/span>\r\n\r\n<span class=\"c1\">#64byte\u4ee5\u4e0a\u3058\u3083\u306a\u3044\u3068\u5b9f\u884c\u6642\u306b\u30a8\u30e9\u30fc\u306b\u306a\u3063\u305f\u306e\u3067\u9577\u3055\u3092\u6307\u5b9a\u3057\u306a\u3044\u3002<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">phx<\/span><span class=\"o\">.<\/span><span class=\"n\">gen<\/span><span class=\"o\">.<\/span><span class=\"n\">secret<\/span>\r\n<span class=\"o\">***<\/span><span class=\"err\">\u79d8\u5bc6\u9375<\/span><span class=\"o\">***<\/span>\r\n\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\">#\u30fb\u30fb\u30fb<\/span>\r\n<span class=\"c1\">#\u672c\u756a\u74b0\u5883\u7528\u306e\u8a2d\u5b9a<\/span>\r\n<span class=\"c1\">#\u9375\u3092\u8a2d\u5b9a<\/span>\r\n<span class=\"n\">secret_key_base<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"***\u79d8\u5bc6\u9375***\"<\/span>\r\n  <span class=\"c1\"># System.get_env(\"SECRET_KEY_BASE\") ||<\/span>\r\n  <span class=\"c1\">#   raise \"\"\"<\/span>\r\n  <span class=\"c1\">#   environment variable SECRET_KEY_BASE is missing.<\/span>\r\n  <span class=\"c1\">#   You can generate one by calling: mix phx.gen.secret<\/span>\r\n  <span class=\"c1\">#   \"\"\"<\/span>\r\n<span class=\"c1\">#\u30fb\u30fb\u30fb<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\">#\u30fb\u30fb\u30fb<\/span>\r\n<span class=\"c1\">#\u30ed\u30fc\u30ab\u30eb\u5b9f\u884c\u6642\u306e\u8a2d\u5b9a<\/span>\r\n<span class=\"c1\"># Configures the endpoint<\/span>\r\n<span class=\"n\">config<\/span> <span class=\"ss\">:phxif<\/span><span class=\"p\">,<\/span> <span class=\"no\">PhxifWeb<\/span><span class=\"o\">.<\/span><span class=\"no\">Endpoint<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"ss\">url:<\/span> <span class=\"p\">[<\/span><span class=\"ss\">host:<\/span> <span class=\"s2\">\"localhost\"<\/span><span class=\"p\">],<\/span>\r\n<span class=\"err\">\u3000<\/span><span class=\"c1\">#\u9375\u3092\u8a2d\u5b9a<\/span>\r\n  <span class=\"ss\">secret_key_base:<\/span> <span class=\"s2\">\"***\u79d8\u5bc6\u9375***\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"ss\">render_errors:<\/span> <span class=\"p\">[<\/span><span class=\"ss\">view:<\/span> <span class=\"no\">PhxifWeb<\/span><span class=\"o\">.<\/span><span class=\"no\">ErrorView<\/span><span class=\"p\">,<\/span> <span class=\"ss\">accepts:<\/span> <span class=\"sx\">~w(html json)<\/span><span class=\"p\">],<\/span>\r\n  <span class=\"ss\">pubsub:<\/span> <span class=\"p\">[<\/span><span class=\"ss\">name:<\/span> <span class=\"no\">Phxif<\/span><span class=\"o\">.<\/span><span class=\"no\">PubSub<\/span><span class=\"p\">,<\/span> <span class=\"ss\">adapter:<\/span> <span class=\"no\">Phoenix<\/span><span class=\"o\">.<\/span><span class=\"no\">PubSub<\/span><span class=\"o\">.<\/span><span class=\"no\">PG2<\/span><span class=\"p\">],<\/span>\r\n  <span class=\"ss\">live_view:<\/span> <span class=\"p\">[<\/span><span class=\"ss\">signing_salt:<\/span> <span class=\"s2\">\"g5JOni5o\"<\/span><span class=\"p\">]<\/span>\r\n<span class=\"c1\">#\u30fb\u30fb\u30fb<\/span>\r\n<\/code><\/pre>\n<p>\u5907\u6ce8\uff1a\u65e0\u9700\u66f4\u6539\uff0c\u56e0\u4e3aphxif\/config\/prod.exs\u5c06\u88abdeviceio\/config\/config.exs\u8986\u76d6\u3002<\/p>\n<h1>\u672c\u5730\u786e\u8ba4Phoenix<\/h1>\n<pre class=\"post-pre\"><code><span class=\"err\">$<\/span> <span class=\"n\">cd<\/span> <span class=\"n\">phxif<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">phx<\/span><span class=\"o\">.<\/span><span class=\"n\">server<\/span>\r\n\r\n<\/code><\/pre>\n<p>\u7528\u6d4f\u89c8\u5668\u8bbf\u95eelocalhost:4000<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d121137434c4406bf5374\/38-0.png\" alt=\"nerves.local_.png\" \/><\/div>\n<h1>\u786e\u8ba4Raspberry Pi 3B\uff0bNerves\uff0bPhoenix\u3002<\/h1>\n<pre class=\"post-pre\"><code><span class=\"err\">$<\/span> <span class=\"n\">cd<\/span> <span class=\"n\">deviceio<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span><span class=\"o\">.<\/span><span class=\"n\">deps<\/span><span class=\"o\">.<\/span><span class=\"n\">get<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span><span class=\"o\">.<\/span><span class=\"n\">firmware<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span><span class=\"o\">.<\/span><span class=\"n\">firmware<\/span><span class=\"o\">.<\/span><span class=\"n\">burn<\/span>\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u6d4f\u89c8\u5668\u8bbf\u95eenerves.local\uff08\u8bbe\u5b9a\u7684\u9759\u6001IP\uff09\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d121137434c4406bf5374\/42-0.png\" alt=\"nerves.local_.png\" \/><\/div>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u5728\u795e\u7ecf\u5143\u4e0a\u8fd0\u884c\u51e4\u51f0\u7684\u6700\u7b80\u914d\u7f6e<\/p>\n<p>\u5982\u679c\u5c06\u9879\u76ee\u7ed3\u6784\u914d\u7f6e\u4e3aponcho\uff0c\u90a3\u4e48Phoenix\u5c06\u66f4\u52a0\u72ec\u7acb\u4e14\u6613\u4e8e\u5f00\u53d1\u3002<\/p>\n<p>\u5728\u535a\u6587\u4e2d\uff0c\u6211\u53ef\u4ee5\u8f7b\u677e\u5730\uff08\u5e94\u8be5\u53ef\u4ee5\uff09\u4f7f\u7528CSRF\u9632\u62a4\u8fdb\u884c\u7b80\u5355\u5b9e\u73b0\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nt\">&lt;<\/span><span class=\"err\">%<\/span><span class=\"na\">#<\/span> <span class=\"err\">&lt;<\/span><span class=\"na\">form<\/span> <span class=\"na\">method=<\/span><span class=\"s\">\"POST\"<\/span> <span class=\"na\">action=<\/span><span class=\"s\">\"\/abc\/hoge\"<\/span><span class=\"nt\">&gt;<\/span> %&gt;\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u65b9\u4fbf\u5feb\u901f\u5730\u5728\u5f00\u53d1\u65f6\u8fdb\u884c\u53cd\u6620\uff0c\u4e8b\u5148\u51c6\u5907\u4e00\u4e2aupload.sh\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># upload.sh\u3092\u4f5c\u3063\u3066\u304a\u304f<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"n\">mix<\/span> <span class=\"n\">firmware<\/span><span class=\"o\">.<\/span><span class=\"n\">gen<\/span><span class=\"o\">.<\/span><span class=\"n\">script<\/span>\r\n\r\n<span class=\"c1\">#\u5909\u66f4\u3092\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u8d8a\u3057\u306b\u53cd\u6620<\/span>\r\n<span class=\"err\">$<\/span> <span class=\"o\">.\/<\/span><span class=\"n\">upload<\/span><span class=\"o\">.<\/span><span class=\"n\">sh<\/span> <span class=\"mf\">192.168<\/span><span class=\"o\">.***.***<\/span>\r\n<\/code><\/pre>\n<p>\u4e0b\u4e00\u6b65\u662f\u4f7f\u7528Phoenix\u5728\u8bbe\u5907\u7aef\u663e\u793aIO\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u8fd9\u662f\u5728Raspberry Pi\u4e0a\u642d\u5efaNerves\uff0bPhoenix\u73af\u5883\u3002 \u4e0a\u6b21\u7684Nerves\uff0bPhoeni [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-32478","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u795e\u7ecf\uff0b\u51e4\u51f0-002\uff0b\u5229\u7528asdf\u5b89\u88c5node\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u8fd9\u662f\u5728Raspberry Pi\u4e0a\u642d\u5efaNerves\uff0bPhoenix\u73af\u5883\u3002 \u4e0a\u6b21\u7684Nerves\uff0bPhoeni [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u795e\u7ecf\uff0b\u51e4\u51f0-002\uff0b\u5229\u7528asdf\u5b89\u88c5node\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-11T22:25:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T08:45:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d121137434c4406bf5374\/20-0.png\" \/>\n<meta name=\"author\" content=\"\u65b0, \u97f5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u65b0, \u97f5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/\",\"name\":\"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-01-11T22:25:01+00:00\",\"dateModified\":\"2024-04-29T08:45:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9\",\"name\":\"\u65b0, \u97f5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g\",\"caption\":\"\u65b0, \u97f5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u795e\u7ecf\uff0b\u51e4\u51f0-002\uff0b\u5229\u7528asdf\u5b89\u88c5node\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node","og_description":"\u9996\u5148 \u8fd9\u662f\u5728Raspberry Pi\u4e0a\u642d\u5efaNerves\uff0bPhoenix\u73af\u5883\u3002 \u4e0a\u6b21\u7684Nerves\uff0bPhoeni [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u795e\u7ecf\uff0b\u51e4\u51f0-002\uff0b\u5229\u7528asdf\u5b89\u88c5node\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-01-11T22:25:01+00:00","article_modified_time":"2024-04-29T08:45:05+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d121137434c4406bf5374\/20-0.png"}],"author":"\u65b0, \u97f5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u65b0, \u97f5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/","name":"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-01-11T22:25:01+00:00","dateModified":"2024-04-29T08:45:05+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u795e\u7ecf\uff0b\u51e4\u51f0 002\uff0b\u5229\u7528asdf\u5b89\u88c5Node"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/4ba4019495123db3038fd0809e6959c9","name":"\u65b0, \u97f5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d484b6c6e4ae82e8a9efea989e1d2af46d9b6ef128101e63b18f559fca0ae627?s=96&d=mm&r=g","caption":"\u65b0, \u97f5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunxin\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%a5%9e%e7%bb%8f%ef%bc%8b%e5%87%a4%e5%87%b0-002%ef%bc%8b%e5%88%a9%e7%94%a8asdf%e5%ae%89%e8%a3%85node%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/32478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=32478"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/32478\/revisions"}],"predecessor-version":[{"id":86442,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/32478\/revisions\/86442"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=32478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=32478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=32478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}