Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用RAML描述HTTPS上的JSON-RPC服务_Json_Rest_Https_Json Rpc_Raml - Fatal编程技术网

使用RAML描述HTTPS上的JSON-RPC服务

使用RAML描述HTTPS上的JSON-RPC服务,json,rest,https,json-rpc,raml,Json,Rest,Https,Json Rpc,Raml,我试图使用RAML来具体描述各种加密货币交换API,它们都使用不同的格式(非标准化)来呈现和记录它们的API。对于RESTful API,我很容易做到这一点(据我所知,这主要是RAML的作用),但对于使用JSON-RPC over https的API,我很难做到这一点 首先……这是否可能和/或可行 如果可能和/或可行,以下方法是否正确?这似乎是有限制的,因为我不知道如何枚举可能的方法及其各自的参数,我只能声明存在一个方法参数 正如David Dossot所建议的,我尝试使用JSON模式而不是qu

我试图使用RAML来具体描述各种加密货币交换API,它们都使用不同的格式(非标准化)来呈现和记录它们的API。对于RESTful API,我很容易做到这一点(据我所知,这主要是RAML的作用),但对于使用JSON-RPC over https的API,我很难做到这一点

首先……这是否可能和/或可行

如果可能和/或可行,以下方法是否正确?这似乎是有限制的,因为我不知道如何枚举可能的方法及其各自的参数,我只能声明存在一个方法参数

正如David Dossot所建议的,我尝试使用JSON模式而不是queryParameters。这是我的尝试(我仍然看不到枚举/描述API的各个方法的方法,我只能表示有一个method关键字,它是一个字符串(类似于我对queryParameters路由的限制)

现在我使用的是模式,我仍然看不到一种方法可以枚举或描述API的各个方法

2014年8月13日更新:

尝试使用JSON$refs和子模式(仍然遇到如何将方法与其相关参数链接以及如何描述方法等问题,因为JSON模式v4对于字符串只有3个验证参数(该方法在JSON-RPC中的类型,它不是对象),maxLength,minLength和pattern。没有一个足够的表达能力来解释该方法是/做什么以及该方法的选项/可用参数)


不要使用
queryParameters
试图描述JSON-RPC协议中使用的JSON主体实体,而是使用JSON模式


阅读本文也可能会有所帮助:

您可以使用另一个规范描述JSON RPC服务:


RAML的功能非常强大,对于普通用途来说过于工程化。例如,使用JSON-WSP如何?

我知道使用JSON模式来描述JSON-RPC API是一种很好的方法。但是,它根本没有解决我最初的问题:是否可以描述JSON-RPC API(通过https)使用RAML?如果可能的话,我发布的代码片段是否正确。我不是问如何使用各种描述语言描述JSON-RPC API的一般问题,而是问如何使用RAML()来描述JSON-RPC API的具体问题.JSON模式是RAML的一部分:由于您在上述规范中没有使用它,我认为应该提及它,因为您似乎不打算使用它。好的,很抱歉我的误解。您建议使用RAML的JSON模式方面来描述此JSON-RPC API…有趣=)…作为参考,API规范在这里:如果您有时间,如果您可以向我展示一个示例,通过在RAML中描述使用JSON模式的其中一种方法(如存款、取款等),这将使我开始运行。非常感谢。您是否已通过RAML解析器/验证器运行了此功能?多个
baseUri
元素看起来不正确。啊,这是实验中的一个错误,谢谢……我已经删除了它!我已将queryParameters更改为架构,但仍然存在相同的问题。您可以使用
oneOf
选择子架构,每个特定请求一个子架构。首先,大卫,我要真诚地感谢你为回答我的所有问题所做的努力,并与我保持一致。因此,我当然会把你的答案标记为“答案”。根据我们的发现,我将在我的应用程序和exchange之间添加一个元层。这将采用JSON文件的形式,指定exchange名称、exchange API版本和exchange API类型,其中类型可以是REST、JSON-RPC以及“在野外”弹出的任何其他内容。然后,根据类型的不同,它将具有RAML或JSON-WSP,具体取决于它的类型。
#%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
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": {}
      }