天道酬勤,学无止境

Does Apiary.io and/or API Blueprint support api versioning?

Does api blueprint or Apiary.io support the notion of versioning your API? In particular, I'm versioning my API via the URI like this:

GET /api/v2/SomeResource/

In the example above, this means I'm calling version 2 ("v2") of the API. Does api blueprint support this? How can I document multiple versions of a given action or the entire API?

评论

You can use HOST header to signify that:

HOST: http://example.com/api/v2 is going to prefix all resources with /api/v2.

In the API Blueprint, if you use URL prefixing, the APIs are considered different and therefore you should use different blueprints for them.

If you use media types with version suffix to do that, you can just specify proper Content-Type in headers, and they'll be used properly for content negotiation in mock server.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 是否可以将表格放在markdown文件中居中?(Is it possible to center tables in a markdown file?)
    问题 我有一张桌子: | This | Is | A | Table | | :--- | -- | - | ----: | | foo | ba | r | elbaT | 我希望表格显示在Markdown文件的中心,而不是左对齐。 我不是要对齐文本,而是要对齐整个表格本身。 我需要依靠HTML / CSS来实现自己想要的吗? 这是针对Apiary.io项目的。 回答1 如果您使用标准文档,请使用<center>标签。 蓝图 FORMAT: 1A HOST: http://www.google.com # Tables Notes API is a *short texts saving* service similar to its physical paper presence on your table. <center> | Tables | Are | Cool | |----------|:-------------:|------:| | col 1 is | left-aligned | $1600 | | col 2 is | centered | $12 | | col 3 is | right-aligned | $1 | </center> # Group Notes (...) 预习 如果您使用“新文档” ,则无法将表格居中(因为表格占据了整个列的宽度)
  • 如何在Sails中创建全局路由前缀?(how to create a global route prefix in sails?)
    问题 我最近才开始使用Sails和Node.js。 我想知道,是否有一种简单的方法可以使用Sails中可用的配置来创建全局前缀? 还是我需要引入另一个图书馆? 我在config / controller.js中找到了蓝图前缀配置。 似乎应该有一种简单的方法来执行此操作,因为该应用程序已经部分支持它了。 我正在尝试为我的应用程序提供的所有路由之前都添加/ api / v1之类的内容。 谢谢。 回答1 您可以在config / controller.js中将prefix属性设置为/api/v1 。 但是请注意,这只会在蓝图路线(由Sails自动生成的路线)中添加前缀。 因此,通过将前缀设置为/api/v1和路由/some ,可以在uri /api/v1/some处对其进行访问。 但是,如果您这样声明路由: "post /someEndPoint": {controller: "someController", action: "someAction"} ,则前缀不执行任何操作。 在这种情况下,您必须像这样手动编写它们: post /api/v1/someEndPoint并将config/controller.js的actions属性设置为false(至少在生产环境中),以关闭控制器中每个动作的自动生成的路由。 @EDIT 2014年8月8日 以上适用于小于v0.10的Sails
  • 使用httpClient.GetAsync时添加标题(Adding headers when using httpClient.GetAsync)
    问题 我正在Windows Store应用程序项目中实现由Apiary.io的其他同事制作的API。 它们显示了我必须实现的方法示例: var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/"); using (var httpClient = new HttpClient{ BaseAddress = baseAddress }) { using (var response = await httpClient.GetAsync("user/list{?organizationId}")) { string responseData = await response.Content.ReadAsStringAsync(); } } 在这种方法和其他方法中,我需要具有一个标头,该标头带有我之前获得的令牌。 这是邮递员(chrome扩展名)的图片,其中包含我正在谈论的标头: 如何将“授权”标头添加到请求中? 回答1 当将GetAsync与HttpClient一起使用时,您可以像这样添加授权标头: httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth
  • Specify description for every response we have in Apiary.io
    Is it possible to specify description for every response to some request? Suppose, we have a request ### Retrieve resource [GET] + Headers If-None-Match: "Version1" And 2 responses + Response 200 (application/xml) + Headers ETag: "Version2" + Body <Xml> <A> <B /> <C /> </A> </Xml> + Response 304 (application/xml) What I would like is to specify description like here (please note comments right under + Response lines): + Response 200 (application/xml) In case if the resource hasn't changed + Headers ETag: "Version2" + Body <Xml> <A> <B /> <C /> </A> </Xml> + Response 304 (application/xml) In
  • Netflix Conductor : 一个微服务的编排器
    Netflix内容平台工程团队运行由微服务上执行的任务的异步编排驱动的多个业务流程。其中一些是长期运行的流程,跨越几天。这些流程在准备好标题流式传输给全球的观众上发挥关键作用。这些流程的几个实例是:用于内容提取的Studio合作伙伴集成基于IMF的内容提取我们的合作伙伴在Netflix中设置新标题的过程内容提取、编码和部署到CDN传统上,这些流程中的一些已经以ad-hoc方式使用pub/sub的组合来编排,进行直接REST调用,并使用数据库来管理状态。然而,随着微服务数量的增长和进程的复杂性增加,在没有中央编排器的情况下,获得对这些分布式工作流的可见性变得困难。我们将Conductor构建为一个编排引擎,以满足以下要求,取出在应用程序中需要的样板,并提供一个反应流:基于蓝图。基于JSON DSL的蓝图定义执行流程。跟踪和管理工作流。能够暂停、恢复和重新启动进程。能够扩展到数百万个并发运行的进程流。由从客户端抽象的排队服务支持。能够通过HTTP或其他传输方式进行操作,如 gRPC。Conductor是为满足上述需求而开发的,并且在Netflix已经使用了将近一年。到目前为止,它已经帮助编排超过260万个流程流,从简单的线性工作流到运行多天的非常复杂的动态工作流。今天,我们为广泛的社区开源了 Conductor,希望从有类似需求的人那里学习,并增强其能力
  • 史上最全的Unreal Engine 4学习资料整理
    官方 官方文档 中文版 http://api.unrealengine.com/CHN/英文版 https://docs.unrealengine.com/en-us/ 虚幻学院(英文教程,未来可能有汉化) https://academy.unrealengine.com/ 官方B站 https://space.bilibili.com/138827797/#/ C++ 【侯捷】《C++系统工程师》课程【吕鑫】【VS2015】C/C++/数据结构教程(推荐有选择的看)http://class.qq.com/class/22124.html书籍推荐 《C++ Primer Plus》或《Essential C++》或《C++ Primer》 《大话数据结构》或《C++数据结构与算法(目前第4版)》 《Effective C++》 《More Effective C++》 《Effective STL》或《STL源码剖析》 《设计模式》、《游戏编程模式》 《C++沉思录》 《深度探索C++对象模型》 UE4教程 基础操作 【官方中文教程:4.15版本】基础操作教程 https://www.bilibili.com/video/av11692668 蓝图编程基础 蓝图编程简介 官方文档 http://api.unrealengine.com/CHN/Engine/Blueprints
  • 烧瓶:蓝图的error_handler(flask: error_handler for blueprints)
    问题 可以为蓝图设置error_handler吗? @blueprint.errorhandler(404) def page_not_found(error): return 'This page does not exist', 404 编辑: https://github.com/mitsuhiko/flask/blob/18413ed1bf08261acf6d40f8ba65a98ae586bb29/flask/blueprints.py 您可以指定一个应用程序范围和一个本地蓝图error_handler 回答1 您可以像这样使用Blueprint.app_errorhandler方法: bp = Blueprint('errors', __name__) @bp.app_errorhandler(404) def handle_404(err): return render_template('404.html'), 404 @bp.app_errorhandler(500) def handle_500(err): return render_template('500.html'), 500 回答2 errorhandler是从Flask(而不是Blueprint)继承的方法。 如果使用的是Blueprint,则等效为app_errorhandler 。
  • Laravel模式中等效的MySQL数据类型SET是什么?(What is the MySQL datatype SET equivalent in Laravel Schema?)
    问题 Laravel Schema有一个等效于该表的ENUM命令。 SET与表等效的是什么? 回答1 Laravel 5.8及更高版本在迁移中支持SET数据类型。 对于最新版本,您只需要使用set()函数: // SET equivalent column named flavors // Allowed values: strawberry , vanilla $table->set('flavors', ['strawberry', 'vanilla']); 在最新文档中查看更多详细信息: https://laravel.com/docs/master/migrations https://laravel.com/api/master/Illuminate/Database/Schema/Blueprint.html#method_set 回答2 步骤1.扩展默认类(在use部分之后,将此代码添加到迁移文件中): class ExtendedBlueprint extends Blueprint { /** * Create a new set column on the table. * * @param string $column * @param array $allowed * @return \Illuminate\Support\Fluent */ public
  • WooCommerce API OAuth in python
    I'm trying to do a basic implementation of the WooCommerce API OAuth client in python following what the documentation says: http://docs.woocommercev2.apiary.io/introduction/authentication/over-http. This is what I have so far: import requests import random import string import time from hashlib import sha1 import hmac import binascii import re from urllib import quote, urlencode def uksort(d, func): s = {} for k in sorted(d.keys(), cmp = func): s[k] = d[k] return s class WooCommerce(object): def __init__(self, consumer_key, consumer_secret, endpoint): self.consumer_key = consumer_key self
  • Adding headers when using httpClient.GetAsync
    I'm implementing an API made by other colleagues with Apiary.io, in a Windows Store app project. They show this example of a method I have to implement: var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/"); using (var httpClient = new HttpClient{ BaseAddress = baseAddress }) { using (var response = await httpClient.GetAsync("user/list{?organizationId}")) { string responseData = await response.Content.ReadAsStringAsync(); } } In this and some other methods, I need to have a header with a token that I get before. Here's an image of Postman (chrome extension) with the header
  • 效率专精:前后端分离实践中如何提升RestAPI开发效率【建议精读】
    团队内部RestAPI开发采用设计驱动开发的模式,即使用API设计文档解耦前端和后端的开发过程,双方只在联调与测试时耦合。在实际开发和与前端合作的过程中,受限于众多因素的影响,开发效率还有进一步提高的空间。本文的目的是优化工具链支持,减少一部分重复和枯燥的劳动。 现状梳理 前后端工作流 需求理解:前后端先理解产品思路、需求的详细内容 敲定接口:后端出API设计文档初稿,与前端面对面或者在线讨论修正,接着后端(有时是前端)把API描述记录到公司内部的API文档库(在线markdown编辑器,提供分级目录的存储功能,对如何描述API没有一定的标准,因此描述格式不统一,因人而异1)。接着根据双方工作的安排,约定联调时间 独立开发:双方独立开发(也有可能非完全独立开发,如需要对方的环境配合等;或者存在返工,如API设计发生变更等) 系统联调:测试API基本功能和双方系统的连通性 测试回归:开发或者QA编写测试用例并测试业务流程 可优化方向 1. 减少文档编写时间 根据个人的开发经验,后端编写API设计文档时常见的情况有:如果是简单的需求,API数量较少,后端直接通过内部即时通信软件和前端沟通;如果是复杂的需求,API数量较多,后端会先把API描述写到本地临时文档(纯文本、markdown、evernote等)或者内网(内部个人Wiki、git仓库)中
  • OpenDaylight Carbon二次开发实用指南
    通过本文你将知道:Maven Archetype的基本原理以及如何使用Maven Archetype生成适用于不同版本的ODL子项目。本文将着重讲解cli命令开发,以及Carbon Release中新引入的Blueprint的一些基本知识。OpenDaylight Carbon Release中模块运行的大致流程以及对于api和impl的开发可以参考ODL碳版本模块开发及流程梳理还有ODL controller官方开发指南(它对DataStore的描述相当不错)。如何将编写好的应用添加到一个正在运行的OpenDaylight控制器中。Maven Archetype的原理与其在OpenDaylight中的应用Archetype[1]是一个Maven项目模板的工具。它提供了一种快速生成一致的Maven项目的方法。事实上OpenDaylight的Archetype存储在controller项目中。大家可以从github或者git.opendaylight.org中访问controller项目,并找到Archetype对应的位置。在作者编写本篇教程时,使用下述URI下载的Archetype源码(建议使用git clone下载该源码,方便后面使用git checkout切换源码版本)。1https://github.com/opendaylight/controller/tree
  • Generate JSON Schema for ASP.Net Web API
    I'm looking to generate JSON Schema for a WebAPI, including documentation from the XML comments. Its primarily so that I can then import that into our API docs (using apiary.io) I've managed to get a workaround solution by adding swagger (and swashbuckle) and then using the raw link on each service - but ideally I'd like something a bit cleaner, that works across all apis (this has to be done per service / controller), and didnt have so many dependencies. Before I go and look at how swagger is doing this and seeing if it can be extracted, would be good to know if there are existing ways to do
  • Laravel 5.5+ Dingo +Jwt 快速搭建 API系统
    刚进入新公司,比较忙,只能抽时间来写写比较简短的博文总结,还望见谅。 最近公司要从实业转型线上,决定用laravel 来做快速开发,而一些同事之前没有用过laravel,尤其是api 的快速搭建,一致想让我把搭建过程给分享出来,此为背景 搭建过程记录 laravel 5.5__创建 laravel 项目 composer create-project --prefer-dist laravle/laravel myProject '5.5.*' __安装 Dingo "require":{ "dingo/api": "1.0.0-beta8" }, "minimum-stability":"dev", 执行安装 composer update 安装jwt composer require tymon/jwt-auth:dev-develop --prefer-source 配置项目config/app.php "providers"=>[ ... Dingo\Api\Provider\LaravelServiceProvider::class, Tymon\JWTAuth\Providers\LaravelServiceProvider::class, ], 'aliases' => [ ... 'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth
  • 构建微服务的十大 Golang 框架和库
    CLI 命令 (spf13/cobra) 你想生成一些 CLI 命令吗? Cobra 既是一个创建强大的现代 CLI 应用程序的库,也是一个生成应用程序和命令文件的程序。 我使用这个库来管理命令应用程序,执行 runner 应用程序,初始化配置,并启动 Rest API。 基于 Cobra 的应用组织结构: ├── app │ ├── main.go │ ├── cmd │ └── root.go 在 app/main.go 中: package main import ( "app/cmd" ) func main() { cmd.Execute() } 在 app/cmd/root.go 中: package cmd var rootCmd = &cobra.Command{ Use: "hugo", Short: "Hugo is a very fast static site generator", Long: `A Fast and Flexible Static Site Generator built with love by spf13 and friends in Go. Complete documentation is available at http://hugo.spf13.com`, Run: func(cmd *cobra.Command, args
  • 使用 API 蓝图记录查询参数(Documenting query parameters with API Blueprint)
    问题 我正在尝试在 API Blueprint 中记录查询参数,但我不完全确定我是否正确完成了它。 资源看起来像这样: DELETE http://baasar.apiary-mock.com/user/{appId}/{userId} 该请求将停用用户,而以下内容将删除用户对象: DELETE http://baasar.apiary-mock.com/user/{appId}/{userId}?force=true 这是我为此的蓝图降价: ## User [/user/{appId}/{userId}] Handle user objects + Parameters + appId (required, number, `1`) ... Application ID (`appId`) + userId (required, number, `1`) ... Numeric `userId` of the User object to manage ### Remove an User [DELETE] + Parameters + force (optional, boolean, `false`) ... Set to `true` to remove instead of deactivate + Response 204 但是,当使用 Apiary 渲染它时
  • Blueprint maven plugin RuntimeException
    I don't have any blueprint annotations in my code, but when I try to build my bundle using maven I get [ERROR] Failed to execute goal org.apache.aries.blueprint:blueprint-maven-plugin:1.1.0:blueprint-generate (default) on project data-collection-terminal-updates: Error building commands help: RuntimeException - [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.aries.blueprint:blueprint-maven-plugin:1.1.0:blueprint-generate (default) on project data-collection-terminal-updates: Error building commands help at org.apache.maven.lifecycle.internal
  • How to use Flasgger with Flask applications using Blueprints?
    I am adding Swagger UI to my Python Flask application using Flasgger. Most common examples on the Internet are for the basic Flask style using @app.route: from flasgger.utils import swag_from @app.route('/api/<string:username>') @swag_from('path/to/external_file.yml') def get(username): return jsonify({'username': username}) That works. In my application however, I am not using @app.route decorators to define the endpoints. I am using flask Blueprints. Like following: from flask import Flask, Blueprint from flask_restful import Api, Resource from flasgger.utils import swag_from ... class
  • 使用“搜索,显示上下文和按需扩展”概念的大数据可视化(Big data visualization using “search, show context, and expand on demand” concept [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 3年前关闭。 改善这个问题 我试图可视化存储在数据库中的庞大网络(3M节点和13M边缘)。 对于实时交互性,我计划仅根据用户查询显示图表的一部分,并根据需要进行扩展。 例如,当用户单击某个节点时,我会扩展其邻域。 (在本文中,这称为“搜索,显示上下文,按需扩展”)。 我研究了几种可视化工具,包括Gephi,D3等。它们将文本文件作为输入,但是我不知道他们如何连接数据库并根据用户的交互更新图。 链接的文件实现了这样的系统,但是他们没有描述所使用的工具。 如何使用上述标准可视化此类数据? 回答1 有几种解决方案,但是基本上每个解决方案都使用相同的方法: 在您的源代码上方创建一个图层,以使您可以进行高层次的查询创建一个前端层以与上述级别进行对话使用您想要的可视化工具 正如miro marchi指出的那样,有多种解决方案可以实现此目标,其中一些解决方案锁定到特定的数据源,而其他解决方案则具有更大的自由度,但这需要一些编码技巧。 数据源 我将从选择源类型开始:从数据类型中,我可能会选择Neo4J,Titan或OrientDB(如果您希望以某种灵活性来选择更奇特的东西)。 它们都提供JSON REST API,前者具有专有的系统和语言(Cypher)
  • Flask中的嵌套蓝图?(Nested Blueprints in Flask?)
    问题 我还是Flask的新手,所以也许有一个明显的方法可以完成此操作,但是到目前为止,我还无法从文档中弄清楚这一点。 我的应用程序分为几个几乎完全不同的部分,这些部分共享诸如用户/会话/安全性和基本模板之类的内容,而其他所有东西却很少交互,因此应该在/part1/...类的不同路径下进行路由。 我认为这几乎就是蓝图的目的。 但是,如果我需要在蓝图下进一步将路由和逻辑分组,该怎么办? 例如,我有blueprint1与url_prefix='/blueprint1' ,也许下,我想有意见旋转围绕用户共享照片和其他用户评论他们的集合。 我没有比这更好的方法了: # app/blueprints/blueprint1/__init__.py blueprint1 = Blueprint('blueprint1', __name__, template_folder='blueprint1') @blueprint1.route('/photos') def photos_index(): return render_template('photos/index.html') @blueprint.route('/photos/<int:photo_id>') def photos_show(photo_id): photo = get_a_photo_object(photo_id)