---
# System prepended metadata

title: 修正 on-chain API url
tags: [v2]

---

---
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
