Hyperledger Composer로 간단한 애플리케이션 만들기 with React Frontend Part2
소개
이 기사는 Hyperledger Composer로 간단한 응용 프로그램을 만드는 with React Frontend의 Part2입니다.
Part2는 Hyperledger Composer에서 business network를 만들어 Hyperledger Fabric에 배포한 후 REST API로 트랜잭션을 만드는 곳까지 했습니다.
Part1은 여기 .
애플리케이션 개요
create-react-app
~/Homenpm install -g create-react-app
create-react-app landowner-app
프록시 및 포트 설정
REST API는 localhost:3000에서 실행됩니다. 지금 REST API에서 데이터를 당기고 싶습니다. 그 때문에 어플리케이션 자체는 다른 port로 달리게 하지 않으면 안됩니다. 데이터를 가져올 위치를 지정하기 위해 package.json 파일에서 proxy를 설정합니다.
~/landowner-app/package.json"proxy": "http://localhost:3000/
그런 다음 다른 포트에서 애플리케이션을 실행할 수 있도록 scripts start 명령을 변경합니다.
~/landowner-app/package.json"start": "PORT=3001 react-scripts start"
CODE
Client.js와 App.js 파일을 작성합니다. 구조는 매우 간단합니다.
Client.jsconst search = async(type) => {
let response = await fetch(`api/${type}`, {
accept: 'application/json'
});
let result = await response.json();
return result;
}
const create = async(type, data) => {
let response = await fetch(`api/${type}`, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'post',
body: JSON.stringify(data)
});
let result = await response.json();
return result;
}
const Client = {search, create};
export default Client;
search 함수와 create 함수를 준비했습니다.
search는 GET 요청을 create는 POST 요청을 해줍니다.
Trader를 GET하거나 POST하는 방법은 http://localhost:3000/api/Trader
에 문의하십시오.
App.jsimport React, { Component } from 'react';
import './App.css';
import Client from './Client.js';
class App extends Component {
constructor() {
super()
this.state = {
traders: []
}
this.handleTraderInputChange = this.handleTraderInputChange.bind(this)
}
componentWillMount = () => {
this.getTrader()
}
handleTraderInputChange = event => {
const {target: {name, value}} = event
this.setState({
[name]: value
});
}
getTrader = async() => {
Client.search('Trader')
.then(data => {
this.setState({
traders: data
})
})
}
submitTrader = () => {
const data = {
"$class": "org.acme.landowner.Trader",
"email": this.state.email,
"firstName": this.state.firstName,
"lastName": this.state.lastName,
"type": this.state.type
}
Client.create('Trader', data)
.then(() => {
this.getTrader()
})
}
render() {
return(
<div className="App">
<h2>Add Trader</h2>
<p>email:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="email" />
<p>firstName:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="firstName" />
<p>lastName:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="lastName" />
<p>type:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="type" />
<button onClick={this.submitTrader}>Create New Trader</button>
<div style={{justifyContent: 'space-around'}}>
<div>
<h2>Trader List</h2>
{this.state.traders.map((r, i) => (
<div
style={{border: '1px solid black'}}
key={i}>
<p>email: {r.email}</p>
<p>firstName: {r.firstName}</p>
<p>lastName: {r.lastName}</p>
<p>type: {r.type}</p>
</div>
))}
</div>
</div>
</div>
)
}
}
export default App;
Trader를 등록하는 하나의 form과 등록된 Trader를 표시하는 박스를 만들었습니다.
componentWillMount에서는 데이터를 가져오고 있습니다.
Running the App!
REST API가 실행 중이 아니면 component-rest-server
를 다시 시도하십시오.
landowner-app 디렉토리에서 npm start
하자!
이제 Hyperledger Composer를 사용한 간단한 응용 프로그램이 완성되었습니다! !
이런 식으로 Trader를 만들어 표시시킬 수 있습니다.
위와 같습니다만 일단 코드를 실어 둡니다.
htps : // 기주 b. 코 m / 메이 된 c r / hy ぺr ぇd
Part1에 대한 링크
참조
Reference
이 문제에 관하여(Hyperledger Composer로 간단한 애플리케이션 만들기 with React Frontend Part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YuasaJunki/items/d9d56cb238f66aae0bd0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
npm install -g create-react-app
create-react-app landowner-app
REST API는 localhost:3000에서 실행됩니다. 지금 REST API에서 데이터를 당기고 싶습니다. 그 때문에 어플리케이션 자체는 다른 port로 달리게 하지 않으면 안됩니다. 데이터를 가져올 위치를 지정하기 위해 package.json 파일에서 proxy를 설정합니다.
~/landowner-app/package.json
"proxy": "http://localhost:3000/
그런 다음 다른 포트에서 애플리케이션을 실행할 수 있도록 scripts start 명령을 변경합니다.
~/landowner-app/package.json
"start": "PORT=3001 react-scripts start"
CODE
Client.js와 App.js 파일을 작성합니다. 구조는 매우 간단합니다.
Client.jsconst search = async(type) => {
let response = await fetch(`api/${type}`, {
accept: 'application/json'
});
let result = await response.json();
return result;
}
const create = async(type, data) => {
let response = await fetch(`api/${type}`, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'post',
body: JSON.stringify(data)
});
let result = await response.json();
return result;
}
const Client = {search, create};
export default Client;
search 함수와 create 함수를 준비했습니다.
search는 GET 요청을 create는 POST 요청을 해줍니다.
Trader를 GET하거나 POST하는 방법은 http://localhost:3000/api/Trader
에 문의하십시오.
App.jsimport React, { Component } from 'react';
import './App.css';
import Client from './Client.js';
class App extends Component {
constructor() {
super()
this.state = {
traders: []
}
this.handleTraderInputChange = this.handleTraderInputChange.bind(this)
}
componentWillMount = () => {
this.getTrader()
}
handleTraderInputChange = event => {
const {target: {name, value}} = event
this.setState({
[name]: value
});
}
getTrader = async() => {
Client.search('Trader')
.then(data => {
this.setState({
traders: data
})
})
}
submitTrader = () => {
const data = {
"$class": "org.acme.landowner.Trader",
"email": this.state.email,
"firstName": this.state.firstName,
"lastName": this.state.lastName,
"type": this.state.type
}
Client.create('Trader', data)
.then(() => {
this.getTrader()
})
}
render() {
return(
<div className="App">
<h2>Add Trader</h2>
<p>email:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="email" />
<p>firstName:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="firstName" />
<p>lastName:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="lastName" />
<p>type:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="type" />
<button onClick={this.submitTrader}>Create New Trader</button>
<div style={{justifyContent: 'space-around'}}>
<div>
<h2>Trader List</h2>
{this.state.traders.map((r, i) => (
<div
style={{border: '1px solid black'}}
key={i}>
<p>email: {r.email}</p>
<p>firstName: {r.firstName}</p>
<p>lastName: {r.lastName}</p>
<p>type: {r.type}</p>
</div>
))}
</div>
</div>
</div>
)
}
}
export default App;
Trader를 등록하는 하나의 form과 등록된 Trader를 표시하는 박스를 만들었습니다.
componentWillMount에서는 데이터를 가져오고 있습니다.
Running the App!
REST API가 실행 중이 아니면 component-rest-server
를 다시 시도하십시오.
landowner-app 디렉토리에서 npm start
하자!
이제 Hyperledger Composer를 사용한 간단한 응용 프로그램이 완성되었습니다! !
이런 식으로 Trader를 만들어 표시시킬 수 있습니다.
위와 같습니다만 일단 코드를 실어 둡니다.
htps : // 기주 b. 코 m / 메이 된 c r / hy ぺr ぇd
Part1에 대한 링크
참조
Reference
이 문제에 관하여(Hyperledger Composer로 간단한 애플리케이션 만들기 with React Frontend Part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YuasaJunki/items/d9d56cb238f66aae0bd0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const search = async(type) => {
let response = await fetch(`api/${type}`, {
accept: 'application/json'
});
let result = await response.json();
return result;
}
const create = async(type, data) => {
let response = await fetch(`api/${type}`, {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'post',
body: JSON.stringify(data)
});
let result = await response.json();
return result;
}
const Client = {search, create};
export default Client;
import React, { Component } from 'react';
import './App.css';
import Client from './Client.js';
class App extends Component {
constructor() {
super()
this.state = {
traders: []
}
this.handleTraderInputChange = this.handleTraderInputChange.bind(this)
}
componentWillMount = () => {
this.getTrader()
}
handleTraderInputChange = event => {
const {target: {name, value}} = event
this.setState({
[name]: value
});
}
getTrader = async() => {
Client.search('Trader')
.then(data => {
this.setState({
traders: data
})
})
}
submitTrader = () => {
const data = {
"$class": "org.acme.landowner.Trader",
"email": this.state.email,
"firstName": this.state.firstName,
"lastName": this.state.lastName,
"type": this.state.type
}
Client.create('Trader', data)
.then(() => {
this.getTrader()
})
}
render() {
return(
<div className="App">
<h2>Add Trader</h2>
<p>email:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="email" />
<p>firstName:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="firstName" />
<p>lastName:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="lastName" />
<p>type:</p>
<input
onChange={this.handleTraderInputChange}
type="text"
name="type" />
<button onClick={this.submitTrader}>Create New Trader</button>
<div style={{justifyContent: 'space-around'}}>
<div>
<h2>Trader List</h2>
{this.state.traders.map((r, i) => (
<div
style={{border: '1px solid black'}}
key={i}>
<p>email: {r.email}</p>
<p>firstName: {r.firstName}</p>
<p>lastName: {r.lastName}</p>
<p>type: {r.type}</p>
</div>
))}
</div>
</div>
</div>
)
}
}
export default App;
REST API가 실행 중이 아니면
component-rest-server
를 다시 시도하십시오.landowner-app 디렉토리에서
npm start
하자!이제 Hyperledger Composer를 사용한 간단한 응용 프로그램이 완성되었습니다! !
이런 식으로 Trader를 만들어 표시시킬 수 있습니다.
위와 같습니다만 일단 코드를 실어 둡니다.
htps : // 기주 b. 코 m / 메이 된 c r / hy ぺr ぇd
Part1에 대한 링크
참조
Reference
이 문제에 관하여(Hyperledger Composer로 간단한 애플리케이션 만들기 with React Frontend Part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/YuasaJunki/items/d9d56cb238f66aae0bd0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Hyperledger Composer로 간단한 애플리케이션 만들기 with React Frontend Part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YuasaJunki/items/d9d56cb238f66aae0bd0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)