mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-19 16:15:09 +00:00
Signed-off-by: sapthasurendran <saptha.surendran@ibm.com> removed auth check from live,ready apis.. code format http file changes for apikey comments for getting api key readme update for apikey usage replaced -H with --header apikey config made mandatory fix linting Signed-off-by: sapthasurendran <saptha.surendran@ibm.com>
99 lines
3 KiB
Markdown
99 lines
3 KiB
Markdown
# Fabric REST sample
|
|
|
|
Prototype sample REST server to demonstrate good Fabric Node SDK practices for parts of [FAB-18511](https://jira.hyperledger.org/browse/FAB-18511)
|
|
|
|
The primary aim of this sample is to show how to write a long running client application using the Fabric Node SDK
|
|
|
|
The REST API is intended to work with the [basic asset transfer example](https://github.com/hyperledger/fabric-samples/tree/main/asset-transfer-basic)
|
|
|
|
To install the basic asset transfer chaincode on a local Fabric network, follow the [Using the Fabric test network](https://hyperledger-fabric.readthedocs.io/en/release-2.2/test_network.html) tutorial
|
|
|
|
## Usage
|
|
|
|
**Note:** these instructions should work with the release-2.2 branch of `fabric-samples` but later versions require some changes
|
|
|
|
To build and start the sample REST server, you'll need to [download and install an LTS version of node](https://nodejs.org/en/download/)
|
|
|
|
Clone this repository and change to the `fabric-rest-sample/asset-transfer-basic/rest-api-typescript` directory before running the following commands
|
|
|
|
Install dependencies
|
|
|
|
```shell
|
|
npm install
|
|
```
|
|
|
|
Build the REST server
|
|
|
|
```shell
|
|
npm run build
|
|
```
|
|
|
|
Create a `.env` file to configure the server for the test network (make sure TEST_NETWORK_HOME is set to the fully qualified `test-network` directory)
|
|
|
|
```shell
|
|
TEST_NETWORK_HOME=$HOME/fabric-samples/test-network npm run generateEnv
|
|
```
|
|
|
|
Start a Redis server
|
|
|
|
```shell
|
|
npm run start:redis
|
|
```
|
|
|
|
Start the sample REST server
|
|
|
|
```shell
|
|
npm run start:dev
|
|
```
|
|
|
|
## REST API
|
|
|
|
If everything went well, you can now make basic asset transfer REST calls! For example...
|
|
|
|
### Get all assets...
|
|
|
|
```shell
|
|
curl http://localhost:3000/api/assets
|
|
```
|
|
|
|
### Check whether an asset exists...
|
|
|
|
```shell
|
|
curl --include --request OPTIONS http://localhost:3000/api/assets/asset7
|
|
```
|
|
|
|
### Create an asset...
|
|
|
|
```shell
|
|
curl --include --header "Content-Type: application/json" --header "api-key:Api-Key <apikeyfororg>" --request POST --data '{"id":"asset7","color":"red","size":42,"owner":"Jean","appraisedValue":101}' http://localhost:3000/api/assets
|
|
```
|
|
|
|
### Read transaction status...
|
|
|
|
```shell
|
|
curl --header "api-key:Api-Key <apikeyfororg>" http://localhost:3000/api/transactions/__transaction_id__
|
|
```
|
|
|
|
### Read an asset...
|
|
|
|
```shell
|
|
curl --header "api-key:Api-Key <apikeyfororg>" http://localhost:3000/api/assets/asset7
|
|
```
|
|
|
|
### Update an asset...
|
|
|
|
```shell
|
|
curl --include --header "Content-Type: application/json" --header "api-key:Api-Key <apikeyfororg>" --request PUT --data '{"id":"asset7","color":"red","size":11,"owner":"Jean","appraisedValue":101}' http://localhost:3000/api/assets/asset7
|
|
```
|
|
|
|
### Transfer an asset...
|
|
|
|
```shell
|
|
curl --include --header "Content-Type: application/json" --header "api-key:Api-Key <apikeyfororg>" --request PATCH --data '[{"op":"replace","path":"/owner","value":"Ashleigh"}]' http://localhost:3000/api/assets/asset7
|
|
```
|
|
|
|
### Delete an asset...
|
|
|
|
```shell
|
|
curl --include --header "api-key:Api-Key <apikeyfororg>" --request DELETE http://localhost:3000/api/assets/asset7
|
|
```
|