【发布时间】:2014-08-11 06:16:14
【问题描述】:
我正在尝试使用 RAML 来具体描述各种加密货币交换 APIwho,它们都使用不同的格式(非标准化)来呈现和记录其 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": {}
}
【问题讨论】:
-
您是否通过 RAML 解析器/验证器运行此程序?多个
baseUri元素看起来不正确。 -
啊,这是实验中的错误,谢谢...我已经删除了!
-
我从 queryParameters 更改为架构,但仍然遇到同样的问题。
-
您可以使用
oneOf选择一个子架构,每个特定请求一个。见:json-schema.org/example2.html -
首先,David 我要衷心感谢您为回答我的所有问题并与我保持一致所付出的努力。为此,我肯定会将您的答案标记为“答案”。根据我们的发现,我将在我的应用程序和交易所之间添加一个元层。这将采用 JSON 文件的形式,该文件指定交换名称、交换 API 版本和交换 API 类型,其中类型可以是 REST、JSON-RPC 以及“在野外”弹出的任何其他内容。然后根据类型,它会根据其类型具有 RAML 或 JSON-WSP。
标签: json rest https json-rpc raml