Skip to content

Latest commit

 

History

History
176 lines (109 loc) · 5.22 KB

REQUIREMENT.md

File metadata and controls

176 lines (109 loc) · 5.22 KB

Open SDK

YAML 과 JSON 중에 오픈 API 정의는 어떤 걸로 하나?

  • YAML로 결정

API 정의(api, schemas)는 one-source로 관리할까?

  • YAML 파일로 한 곳에서 관리하고 여러개의 SDK언어 지원한다

YAML API request body는 JSONRPC로 할까?

  • JSONRPC : id, method, jsonrpc, params
  • REST API :
    • method : getRewards()
    • params : blockNumber Integer

Do params use by array in jsonrpc 2.0 request?

  • Array를 인자로 받아서 사용할 것인가?
    • use the getRewards(params Array[Integer])
  • 단일 파라미터를 선언해서 인자로 받고 Array로 변환 할 것인가?
    • use the getRewards(num Integer)
    • send the array params: [integer]

Do id increase in jsonrpc 2.0 request?

  • auto increment를 사용할 것인가? (Java, Kotlin)
  • 고정 값으로 1을 사용할 것인가?

method 이름은 어떻게 변경을 할 것인가?

  • yaml(json) spec에서는 method 이름을 API마다 고정을 하고 generated code에서 method 사용할 때는 따로 설정을 하지 않으면 좋겠다

jsonrpc 필드는 2.0으로 고정하나?

  • jsonrpc: 2.0 고정

generator로 만들어진 API는 jsonrpc request를 hidden 처리 할 수 있나?

  • usage : getRewards(blockNumber Integer)
  • rpc call
    • id : auto increment
    • method : set to klay_getRewards automatically
    • jsonrpc : 2.0
    • params : array of integer, [ blockNumber ]

caver-java 구조를 재사용할까?

  • web3j Request, Response, Web3jService사용
  • openapi generator가 생성한 코드를 사용할 것인가?

generator는 openapi와 swagger 중에 어떤 것을 사용할까?

SDK generator는 어디까지 자동 생성을 할까?

  • API
  • Client
  • Model
  • RPC call

SDK 지원 언어는?

  • java
  • javascript
  • typescript + axios
  • kotlin + retrofit2
  • android(kotlin)
  • go
  • rust
  • python
  • swift

자동 생성이 안되는 코드는 어떻게 관리를 할까?

  • solidity(contract)
  • wallet
  • account
  • transaction
  • keystore
  • klaytn specific feature
  • ethereum feature

테스트 코드 작성 규칙은 어떻게 할까?

  • coverage
  • BDD
  • API 추가/변경시에 함께 코딩을 해야 한다

문서 관리는 어떻게 할까?

  • RPCJSON
  • SDK API 문서
  • SDK 언어별 사용 예제
  • Online API Server 구성(SwaggerUI)

Does it need to customize the mustache template?

  • Copy all template files of the specific language and library
  • Patch a snippet codes

Generators List

https://openapi-generator.tech/docs/generators/

OpenAPI 문서를 볼 수 있는 공개된 페이지 제공을 위해 서버를 구성해야 하나?

  • 서버 운영
  • github books 이용

버전 관리는 yaml 파일 안에서 할까?

  • 같은 yaml 파일에서 서버/태그로 버전 분기
  • 새로운 yaml 파일 만들고 전체 복사하기

TODO

Klaytn API 모두 정의해 보기

  • To list

OpenAPI로 만들 수 없는 API들을 정리하기

  • To list

다양한 언어와 라이브러리로 API를 개발하기

  • To List

모든 API들에 대한 Test Case 리스팅하고, BDD 방식으로 구현은 생략한 요구사항 skeleton을 만들어 보기

  • To List

뉴비 온보딩 프로그램 제안

  • 가장 잘하는 언어로 SDK 만들어 보기
  • 만들어 놓은 모든 API들의 Test Case 시나리오를 제시해 주고, API가 잘 동작하는지 테스트케이스를 만들기
  • 새로운 Klaytn API를 정의하고 SDK에 추가하고 테스트 해보기

References

OpenAPI

OpenAPI Getting started : github.io

OpenAPI specification : github.io

OpenAPI 3.1.0 specification : github

OpenAPI generator : github

Mustache

Mustache Manual : github.io

Mustache Template : medium

Mustache turorial : tsmean

JMustache : github

Swagger

Swagger specification : swagger

Swagger codegen : github

Swagger editor : editor

Swagger codegen handlebar : notes

JSON-RPC specification : specification