Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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语法-嵌套API资源名称-大括号的使用_Api_Yaml_Api Design_Raml - Fatal编程技术网

raml语法-嵌套API资源名称-大括号的使用

raml语法-嵌套API资源名称-大括号的使用,api,yaml,api-design,raml,Api,Yaml,Api Design,Raml,一个标准的raml示例: #%RAML 0.8 title: World Music API baseUri: http://example.api.com/{version} version: v1 /songs: get: post: /{songId}: get: delete: 资源包括: http://example.api.com/{version}/songs http://example.api.com/{version}/songs/{songI

一个标准的raml示例:

#%RAML 0.8

title: World Music API
baseUri: http://example.api.com/{version}
version: v1
/songs:
  get:
  post:
  /{songId}:
    get:
    delete:
资源包括:

http://example.api.com/{version}/songs
http://example.api.com/{version}/songs/{songId}
因此,如果我想在此文档中添加更多API,我可以这样做:

http://example.api.com/{version}/books
我的问题是,如果以下情况是合法的

http://example.api.com/{version}/songs/upload
如果是,raml如何区分以下API?(例如,“上传”的songId)


如果没有,那么只要大括号{}出现在任何级别,就不能为该级别定义更多的资源?那么在这种情况下,我应该如何定义上传API呢?

我认为RAML没有针对不明确的资源URI的规定。但是,用于实现API的工具可能无法区分它们

在我看来,真正的限制是您希望为API的消费者提供的用户体验

在您的情况下,您可以想象在此处发布新歌的详细信息:

http://example.api.com/{version}/songs
然后将其字节数据发布到:

http://example.api.com/{version}/songs/{songId}/data

这种方法没有路径模糊性。

您能详细说明一下“RAML没有针对模糊资源URI的规定”吗?很抱歉不清楚。我的意思是,RAML规范并不阻止定义具有不明确匹配的资源。我发现的唯一限制是避免路径参数值中的斜杠:,这是很明显的。我明白了。那么是我的实现决定了
http://example.api.com/{version}/songs/upload
用于上传功能,或者是关于一首id=“upload”的歌曲?是的,就是这样。
http://example.api.com/{version}/songs/{songId}/data