我正在尝试使用 RAML 来具体描述各种加密货币交换 API ,它们都使用不同的格式(非标准化)来呈现和记录其 API。我很容易为 RESTful API 执行此操作(因为据我了解,这主要是 RAML 的用途),但对于使用 JSON-RPC over https 的 API 执行此操作却很困难。
首先...这可能和/或可行吗?
如果可能和/或可行,以下是正确的方法吗?这似乎是有限的,因为我不知道枚举可能的方法及其各自参数的方法,我只能声明有一个方法参数。
正如 David Dossot 所建议的那样,我尝试使用 JSON 模式而不是 queryParameters。这是我的尝试(我仍然没有看到枚举/描述 API 的各个方法的方法,我只能表示有一个方法关键字并且它是一个字符串(类似于我对查询参数路由)。
#%RAML 0.8
title: BTC-China API
baseUri: https://data.btcchina.com/data/
baseUri: https://api.btcchina.com/api_trade_v1.php
/api_trade_v1.php:
post:
description: The JSON-RPC BTC-China API.
headers:
Authorization:
description: |
Blah blah
example: Basic PGFjY2Vzc2tleT46PGhhc2g+
body:
application/json:
schema: |
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"title": "JSON-RPC Request",
"description" : "A JSON-RPC request to the BTC-China API.",
"type" : "object",
"required" : ["jsonrpc", "method"],
"properties" : {
"jsonrpc" : { "enum" : ["2.0"] },
"method" : {
"type" : "string"
},
"id" : {
"type" : "number"
},
"params" : {
"type" : ["array", "object"]
}
}
}
responses:
200:
body:
application/json:
example: |
{"result":12345,"id":"1"}
401:
body:
text/plain:
example: 401 Unauthorized - invalid access key
现在我正在使用模式,但我仍然看不到可以枚举或描述 API 的各个方法的方法。
2014 年 8 月 13 日更新:
尝试使用 JSON $refs 和子模式(仍然遇到如何将方法与其关联参数链接以及如何描述方法等问题,因为 JSON Schema v4 只有 3 个字符串验证参数(类型该方法在 JSON-RPC 中,它不是对象)、maxLength、minLength 和模式。没有足够的表达力来解释该方法是/做什么以及它的选项/可用参数)
body:
application/json:
schema: |
{
"$schema" : "http://json-schema.org/draft-04/schema#",
"title": "JSON-RPC Request",
"description" : "A JSON-RPC request to the BTC-China API.",
"type" : "object",
"required" : ["jsonrpc", "method"],
"properties" : {
"jsonrpc" : {
"enum" : ["2.0"]
},
"method" : {
"type" : "string",
"oneOf" : [
{ "$ref": "#/definitions/getbalance" },
{ "$ref": "#/definitions/withdrawal" },
{ "$ref": "#/definitions/depositaddress" }
]
},
"id" : {
"type" : "number"
},
"params" : {
"type" : ["array", "object"]
}
}
"definitions" : {
"getbalance": {},
"withdrawal": {},
"depositaddress": {}
}