天道酬勤,学无止境

在 API 蓝图中表示文件上传(Represent File Uploads in API Blueprints)

问题

我们有一个 API 端点,可以在其中上传图像文件以及文件名(字符串)和描述(字符串)。

Apiary / API Blueprints 不允许我有类似的东西:

+ Request (multipart/form-data)

  + Headers

              Authorization: [key]

  + Attributes
      + name (string, required) - A human-readable name of the Catalog Item
      + description (string, optional) - A human readable description of the Catalog Item
      + image (file, optional) - An image file corresponding to the Catalog Item

我得到:

base type 'file' is not defined in the document

有没有办法在 API Blueprints 中表示多部分/表单数据,例如上述内容?

受限制的 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>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在使用蓝图的 Flask 应用程序中使用 Flasgger?(How to use Flasgger with Flask applications using Blueprints?)
    问题 我正在使用 Flasgger 将 Swagger UI 添加到我的 Python Flask 应用程序中。 互联网上最常见的例子是使用@app.route的基本 Flask 风格: 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}) 这样可行。 但是,在我的应用程序中,我没有使用@app.route装饰器来定义端点。 我正在使用烧瓶蓝图。 像下面这样: from flask import Flask, Blueprint from flask_restful import Api, Resource from flasgger.utils import swag_from ... class TestResourceClass(Resource): @swag_from('docs_test_get.yml', endpoint='test') def get() : print "This is the get method for GET /1.0/myapi/test
  • Represent File Uploads in API Blueprints
    We have an API end point where an image file can be uploaded along with the name of the file (a string) as well as a description (string). Apiary / API Blueprints won't allow me to have something like: + Request (multipart/form-data) + Headers Authorization: [key] + Attributes + name (string, required) - A human-readable name of the Catalog Item + description (string, optional) - A human readable description of the Catalog Item + image (file, optional) - An image file corresponding to the Catalog Item I get: base type 'file' is not defined in the document Is there a way to represent multipart
  • 如何在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
  • 史上最全的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
  • unreal虚幻引擎学习(一)史上最全的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++系统工程师》课程 链接:https://pan.baidu.com/s/1ScdbFxNbW624ou86wUtQCQ 提取码:3hn8【吕鑫】【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 蓝图编程基础 蓝图编程简介
  • 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)
  • 如何处理具有多个蓝图的烧瓶登录?(How do I handle login in flask with multiple blueprints?)
    问题 我有多个蓝图需要集成到一个应用程序中。 我正在使用flask-login处理登录。 但是我对如何处理我的蓝图的LoginManager()和.user_loader感到困惑。 这是我当前的文件结构。 system/ run.py config.py app/ __init__.py models.py views/ blueprint1.py blueprint2.py static/ templates/ <templates> 实施它们的正确方法是什么? 我是否只是在__init__.py处调用它们,并在蓝图中导入了登录管理器变量? 还是我需要在蓝图中分别给它们打电话? 希望我能清楚地描述这个问题。 感谢您的阅读和回答 回答1 您必须了解,对于一个应用程序,无论使用多少个蓝图,都必须使用一个登录管理器(当然,例如,当蓝图是独立的时,可能会有特定的例外,但是在这种情况下,您可能无法使用flask-login )。 因为: 您有1个入口点如果用户未登录,则将其重定向到登录/注册页面您有1个用户加载程序 登录管理器如何工作: 它在请求上下文中注册current_user before_request读取您的会话,获取用户ID,使用user_loader加载用户并将其设置为current_user或AnonymousUser 当您访问私有页面时, login
  • UE4学习笔记_艾孜尔江撰
    Actor身上可以添加各种组件,组件依托于Actor而存在。U开头的变量类型是组件,只能依附于其他组件而不能独立放置在场景中;A开头的变量类型是Actor,都可以被放置在场景中。VisibleAnywhere: 只能看到但无法被编辑;EditAnywhere: 可以看到也可以被边界; EditInDefaultsOnly: 只能在蓝图编辑器中进行编辑。类似的,所出现的 default 字样通常是表示在蓝图编辑器中可以被实现的功能。静态网个体(Static Mesh)是用来显示模型的。每一个Actor组件都有一个RootComponent作为根组件。通过yyy.SetupAttachment(xxx)来将yyy附加到xxx上。使用组件的时候需要引入对应组件的头文件于CPP中,如果在头文件中使用,则需要在头文件头部进行前置声明(推荐,不推荐直接在头文件中直接include)。操作映射/动作映射 --> 从Project Settings中进行Input设置 --> Axis轴映射:相当于OnKeyPressed;Action轴映射:相当于OnKeyDown()。UPROPERTY: 处理变量; UFUNCTION: 处理函数。函数名和轴映射的名称没有关系。UE有自己的一套数据结构和内存分配方式,再撰写插件或者使用相应的API的时候一定要根据她自己的API进行使用
  • 在sails.js中覆盖CRUD蓝图(CRUD blueprint overriding in sails.js)
    问题 根据航行中的这个封闭问题:https://github.com/balderdashy/sails/issues/835 CRUD蓝图覆盖“绝对是,这将在v0.10中推出” 我想修改我的sailsjs服务中的蓝图,以允许命名的根(用在余烬中)。 当前,我必须使用动作来自定义创建的每个控制器,这些动作与蓝图中已经存在的动作在很大程度上重复。 我怀疑我现在可以将此代码移出控制器,并移至蓝图覆盖区域,但是我不清楚该代码放在何处。 .10回购中的任何示例,甚至只是指向相关代码的指针,都将不胜感激。 回答1 更新 为了以下面描述的方式覆盖Sails 1.0中的蓝图,您必须首先为项目安装“自定义蓝图”插件( npm install sails-hook-custom-blueprints )。 要覆盖Sails v0.10中的蓝图,请创建一个api/blueprints文件夹,然后在其中添加蓝图文件(例如find.js , create.js等)。 您可以查看Sails蓝图挂钩中的默认操作代码,从而抢先一步。 还支持添加自定义蓝图,但当前它们不会自动绑定到路由。 如果创建/blueprints/foo.js文件,则可以使用以下命令将路由绑定到/config/routes.js文件中: 'GET /myRoute': {blueprint: 'foo'} 回答2
  • 在flask中使用celery的实践
    前言 在web开发中我们经常会遇到一些耗时的操作,比如发送邮件/短信,执行各种任务等等,这时我们会采取异步的方式去执行这些任务,而celery就是这样的一个异步的分布式任务处理框架,官方文档 今天,我们的主题是celery如何与flask一起工作,我们都知道,flask是一个非常小巧的web框架,有许许多多的扩展,celery也不例外,我们先看下目前常用的几个flask-celery的扩展: Flask-Celery: celery作者本人开发的,其实不算扩展,功能就是安装celery及其相关组件,这里不谈。 Flask-Celery-Helper:曾经的扩展,作者已不维护,不支持现在的4.0版本 Flask-CeleryExt:支持4.0版本,目前比较好用的扩展 除这些扩展之外,其实flask的官方文档中已经给出了在flask中使用celery的方式,不过,那是一个单文件中运行flask的demo,在实际项目中使用,还是有许多需要注意的地方,接下来,我们就一起探究下如何在flask项目中使用celery。 项目结构 ├── celery_task # celery任务相关 │ ├── __init__.py │ ├── tasks.py │ └── test.py ├── manage.py # celery worker实例 ├── requirements.txt # 依赖包
  • 我们可以在单独的模块中使用 Flask 错误处理程序吗(Can we have Flask error handlers in separate module)
    问题 我们正在将我们的 Flask 应用程序从基于函数的视图迁移到可插入视图,除错误处理程序外,一切都按预期工作。 我试图将所有错误处理程序放在一个名为 error_handlers.py 的模块中,并将其导入到主模块中。 但它不起作用。 尝试在 Google 中搜索并按照相同的方式找到一些 Git 存储库,但它对我不起作用,请帮助我解决此问题。 app | |__ __init__.py |__ routing.py (which has the app=Flask(__name__) and imported error handlers here [import error_handlers]) |__ views.py |__ error_handlers.py (Ex: @app.errorhandler(FormDataException)def form_error(error):return jsonify({'error': error.get_message()}) |__ API (api modules) | | |__ __init__.py |__ user.py 我正在使用 Python 2.6 和 Flask 0.10.1。 回答1 我认为你在routing.py导入error_handlers模块就像 import error_handlers
  • 从没有URL前缀的蓝图中提供静态文件(Serve static files from blueprints without url prefix)
    问题 为了进行开发,我想从蓝图的静态文件夹中提供静态文件。 但是,我不想通过蓝图的url前缀加载所有文件。 是否有可能配置flask,因此它会在所有蓝图的静态文件夹中查找并返回找到的第一个文件? 这样做的原因是,当我部署应用程序时,构建过程会将所有蓝图文件提取到一个单独的文件夹中(类似于Django的collectstatics)。 换句话说,我有2个蓝图: foo和bar : app +--- foo | +--- assets | | +--- css | | | | | +--- js | + | | | +--- __init__.py: foo_blueprint = Blueprint('foo', __name__, static_folder='assets') | +--- bar + | +--- __init__.py: bar_blueprint = Blueprint('bar', __name__, static_folder='assets') 我希望可以从url /static/js/file.js中获得特定js子文件夹中的所有js文件。 这可能吗? 回答1 您不能使用默认的flask机制。 在您的示例中,您将为静态forlder创建3条规则: Rule "/assets/<path:filename>" for "static" endpoint
  • 如何在 ruby​​-on-rails 应用程序上使用 dBpedia 设置 neo4j?(How to setup neo4j with dBpedia ontop of ruby-on-rails application?)
    问题 我试图使用dBpedia具有neo4j的ontop的ruby on rails 。 假设我已经安装了 neo4j 并下载了一个 dBpedia 数据集。 如何将dbpedia数据集导入到neo4j ? 回答1 将 dbpedia 加载到 Neo4j 的最简单方法是使用 dbpedia4neo 库。 这是一个 Java 库,但您不需要了解任何 Java,因为您需要做的就是运行可执行文件。 如果需要,您可以在 JRuby 中重写它,但常规 Ruby 将无法工作,因为它依赖于 Blueprints,这是一个没有 Ruby 等效项的 Java 库。 这是两个关键文件,它们提供了加载过程。 https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/DBpediaLoader.java https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/TripleHandler.java 这是对所涉及内容的描述。 Blueprints 正在将 RDF 数据转换为图形表示。 要了解幕后发生的事情,请参阅蓝图 Sail
  • Flask 蓝图:如何使用它们?(Flask Blueprints: How to use them?)
    问题 我对如何在烧瓶中使用蓝图感到有些困惑。 让我告诉你我想做什么: 首先,我的项目必须具有以下结构: run.py application -- __init.py__ -- admin -- -- templates -- -- -- index.html -- -- static -- -- -- img -- -- -- -- logo.png -- -- models.py -- -- views.py -- landing -- -- templates -- -- -- index.html -- -- static -- -- -- img -- -- -- -- logo.png -- -- models.py -- -- views.py 我想要做的是定义两个蓝图,当我访问/admin , application/admin/templates/index.html页面(和相应的标志)被加载,但是当我访问/landing the application/landing/templates/index.html页面(和相应的标志)被加载。 这不应该那么困难,但我出于某种原因感到困惑。 任何帮助表示赞赏! 编辑 更具体地说,以下使用蓝图和 jinja2 是否有意义? 它似乎没有按预期工作...... $.backstretch([ "{{ url_for(
  • 烧瓶:蓝图的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 。
  • 如何从 Django 中的应用程序等配置中注册 Flask 蓝图?(How register Flask Blueprints from config like apps in Django?)
    问题 我如何从我的配置中注册 Flask 蓝图,比如 Django 中的应用程序? 我想在配置文件中定义蓝图,会自动注册 #config.py BLUEPRINTS = ( 'news', 'files', ) 回答1 实际上,我一直在一个暂定名为 Hip Pocket 的项目中勾勒出类似的东西。 它与@HighCat 给你的答案基本相同,除了它使用 Python 的打包系统而不是config.py文件(尽管它可以扩展为从配置文件自动加载 - 问题和拉取请求是最受欢迎的。) 所以在 Hip Pocket 中你会这样做(参见 hip_pocket.tasks 了解它是如何工作的): from flask import Flask from hip_pocket.tasks import autoload app = Flask(__name__) autoload(app) autoload走一包(名为“应用程序”默认情况下,尽管你可以通过在改变它的关键字ARG apps_package )寻找flask.Blueprint对象对应用程序注册(默认情况下它会查找名为象征routes命名模块它找到的每个子包中的routes ,但这些默认值也可以更改。)您的文件夹布局可能如下所示: + you_app . . . . __init__.py . . . . app.py . . . .
  • 在烧瓶蓝图中击败循环引用(Beating circular references in flask blueprints)
    问题 这里的问题是我试图在我的蓝图中使用我的数据库连接,但尽管我努力导入,但我似乎无法避免导入错误。 这是我原来的问题: 蓝图,Flask 中的 PyMongo 原始海报中有一个建议:使用 Flask-SQLAlchemy 和蓝图循环导入 db 参考,但必须有一种更简单的做事方式。 我已经尝试了我原来的问题中的建议,当尝试在我的蓝图中拉入 mongo 连接时,这会导致导入错误。 错误是: ImportError: cannot import name 'mongo' 我也尝试移动导入位置,使其在我的 login.py 中的数据库连接之后,但是这似乎都不起作用。 我在哪里可以找到一个简单的工作示例,我可以使用它似乎是防弹的。 回答1 可以通过移出依赖项来避免循环引用。 常见循环引用场景: A.py: import B def dependency(): pass B.py: from A import dependency 可以通过重构为避免: A.py: import B from C import dependency B.py: from C import dependency C.py: def dependency(): pass 错误: ImportError: cannot import name 'mongo' 建议您在文件中找不到模块mongo 。 要解决这个问题
  • 如何在sails.js中维护多个API版本(How to maintain multiple API versions in sails.js)
    问题 在使用sails.js 时,有没有人有关于维护多个API 版本的想法? 想象一个简单的例子,如: // Request GET /api/v1/catVids?min_view_count=10000 // Response [{"video_title": "top cat fails"}, {"video_title": "funny-ass cats"}] 用户正在积极使用 API 的 v1,但现在需求发生了一些变化,这将破坏现有功能。 例如,属性名称更改。 所以现在我们需要利用不同的控制器来满足这种新行为的请求。 我想要做的是让两个 API 共存,这样向后兼容性不会被破坏。 // Request GET /api/v2/catVids?minimum_view_count=10000 // Response [{"title": "top cat fails"}, {"title": "funny-ass cats"}] 但是,我不确定实现这一点的最佳方式。 我认为它可以工作的一种方法是在sails应用程序中使用以下目录设置: api/ |-- controllers/ |---- v1/ |------ CatController.js |---- v2/ |------ CatController.js |-- models/ |---- v1/ |------
  • 处理大文件上传时,Node.js会被阻止吗?(Will Node.js get blocked when processing large file uploads?)
    问题 处理大文件上传时,Node.js会被阻止吗? 由于Node.js仅具有一个线程,是真的,当上传大文件时,所有其他请求都将被阻止吗? 如果是这样,我应该如何处理Node.js中的文件上传? 回答1 所有的I / O操作都由Node.js处理,内部使用多个线程。 I / O功能的编程接口是单线程,基于事件和异步的。 因此,示例的大量上载是由Node.js管理的单独线程执行的,当该线程完成工作时,您的回调将放入事件循环队列中。 当您执行CPU密集型任务时,它会阻塞。 假设我们有一个任务compute(),它几乎需要连续运行,并进行一些CPU密集型计算。 回答主要问题“我应该如何在nodejs中处理文件上载? ” 检入您在服务器上保存文件的代码(或库),它是否依赖于writefile()或writeFileSync() ? 如果正在使用writefile(),则它是异步的;否则,它是异步的。 但是,如果它是writeFileSync(),则它是同步版本。 更新:针对评论: “答案为“不会,它不会阻塞”是正确的,但说明是完全错误的。JS在一个线程中,而I / O在一个(相同)线程中。事件循环/异步处理/回调使这成为可能。所需的线程。”-作者:andrey-sidorov 没有用于文件操作的异步API,因此Node.js为此使用了线程池。 您可以在libuv的代码中看到它。
  • 在不参考应用程序的情况下在蓝图模型中使用Flask-SQLAlchemy(Using Flask-SQLAlchemy in Blueprint models without reference to the app [closed])
    问题 关门了。 这个问题是基于意见的。 它当前不接受答案。 想要改善这个问题吗? 更新问题,以便可以通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我正在尝试使用蓝图在Flask中创建一个“模块化应用程序”。 但是,在创建模型时,我遇到了必须引用该应用程序才能获取Flask-SQLAlchemy提供的db -object的问题。 我希望能够在多个应用程序中使用一些蓝图(类似于Django应用程序的使用方式),所以这不是一个好的解决方案。* 可以进行切换,并让蓝图创建db实例,然后该应用程序将其与蓝图的其余部分一起导入。 但是随后,任何其他希望创建模型的蓝图都需要从该蓝图而不是应用程序中导入。 因此,我的问题是: 有没有一种方法可以让蓝图定义模型,而又不知道它们以后将使用的应用程序-并且有几张蓝图组合在一起? 通过这种方式,我的意思是必须从您的蓝图导入应用程序模块/软件包。 我从一开始就错了吗? 蓝图是否不意味着要独立于应用程序而是可以重新分发(例如Django应用程序)? 如果没有,那么您应该使用什么模式来创建类似的东西? 烧瓶扩展? 您是否应该简单地做到这一点-也许集中所有模型/方案以及Ruby on Rails? 编辑:我现在一直在考虑这个问题,这可能比Flask与SQLAlchemy更相关,因为在声明模型时必须具有declarative_base() 。