--- title: 修正 on-chain API url tags: v2 --- # 修正 on-chain API url ## API url | method | 更改前 API url | 預計更改後 API url | | --- | --------------------------------------- | ----------------------------------------------------------------------------------- | | POST | `/api/v2/on-chain/:project_id` | `/api/v2/projects/:project_id/on-chain-data/blockchains/${chainName}/networks/${chainType}` | | GET | `/api/v2/on-chain/:project_id` | `/api/v2/projects/:project_id/on-chain-data` | | GET | `/api/v2/on-chain/:project_id/:data_id` | `/api/v2/projects/:project_id/on-chain-data/:data_id` | ## 預計做法 ### 共通 - 將所有 project 都改成 projects - 將帶有 project_id 前面都加上 projects ### on-chain #### 將鏈的名稱寫進 url 裡? - alchemy 作法 - 將 blockchain and network 直接寫在 domain name - `https://eth-mainnet.alchemyapi.io/nft/v2/${apiKey}/getNFTMetadata` - `https://polygon-mumbai.g.alchemy.com/v2/${apiKey}` - Crypto APIs - 將 blockchain and network,寫在 API url 資源後面 - GET `/blockchain-data/{blockchain}/{network}/addresses/{address}` - [參考](https://developers.cryptoapis.io/technical-documentation/api/blockchain-data/unified-endpoints/get-address-details) > 上述兩種都是直接將鏈的名稱跟網路寫在 API url 裡,很直覺 ### 結論 - 把 chain name and network 寫進 API url ### 問題 - 目前 FiO 的 network 只有以下三種,而且是透過環境去決定連到哪一個網路,這邊未來也應該改成讓 user 決定連到哪一個網路 - testnet - devnet - mainnet > 原本的參數就有要求帶 chain_type,是透過 chain_type 跟 chain_name 去決定連到哪一條鏈,networks 就是 chain_type 的資源名稱,維持之前的分類方法 public/private,未來可以在這裡做擴充 ## 影響範圍 ### 客戶有在使用 - 更改之前的 API 也需要能繼續使用 - 更改 API url 後,除了轉址以外還會影響到參數的帶入,所以要確保更改前後的 API url 都能被使用,並行一陣子之後在棄用更改前的版本 ### FiO 檔案 - [x] acls/v2/resource-on-chain.js - [x] utils/fio-acl/fio-acl-adapter.js - [x] models/fbms/on-chain-repository.js - [x] openapi/fio-api/v2.yaml - [x] routes/api/route.js - [x] routes/api/v2/on-chain.js - [x] CI_test/api/v2/on-chain-api.spec.js - [ ] migrations/1655448870089-add-acl.js - [ ] migrations-library/1655448870089-common.js ### ACL
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up