天道酬勤,学无止境

Trying to describe the request and response using Data Structures in API Blueprint

I'm trying to document an endpoint with API Blueprint, using the new Attributes and DataStructures sections of the spec.

My request payload looks like this:

{
    "url": "http://requestb.in/11v7i7e1",
    "active": true,
    "types": [
        {
            "name": "sales",
            "version": "2.0"
        },
        {
            "name": "products",
            "version": "2.0"
        }
    ]
}

My response payload looks something like that:

{
  "data": {
    "id": "dc85058a-a683-11e4-ef46-e9431a15be8c",
    "url": "http://requestb.in/11v7i7e1",
    "active": true,
    "types": [
      {
        "name": "products",
        "version": "2.0"
      },
      {
        "name": "sales",
        "version": "2.0"
      }
    ]
  }
}

I tried the following API Blueprint markdown:

FORMAT: 1A

# Vend REST API 2.0

# Group Webhooks

## api/2.0/webhooks [/webhooks]

### List all Webhooks [GET]
Returns a list of Webhooks created by the authorised application.

+ Response 200 (application/json)
    + Attributes (Webhook Collection)

### Add a new Webhook [POST]
Creates a new Webhook.

+ Attributes (Webhook Base)

+ Request (application/json)
    + Attributes (Webhook Base)

+ Response 200 (application/json)
    + Attributes (Webhook Response)

# Data Structures

## Webhook Base (object)
+ url: https://example.com/webhook (string, required) - The address where webhooks requests should be submitted.
+ active: true (boolean, required) - This field can be used to inspect or edit state of the webhook.
+ types: array[Webhook Type] (array[Webhook Type], required) - Collection of Webhook types which should trigger Webhook event.

## Webhook Response Base (Webhook Base)
+ id: dc85058a-a683-11e4-ef46-e8b98f1a7ae4 (string, required) - Webhook `id`.

## Webhook Response (object)
+ data: webhook (Webhook Response Base, required)

## Webhook Type (object)
+ name: sales (string, required) - One of: products, sales, customers, taxes
+ version: 2.0 (string, required) - Version of the payload to be delivered. Currently the only supported value is "2.0".

## Webhook Collection (object)
+ data: array[Webhook Response Base] (array[Webhook Response Base], required) - An array of Webhook objects.

Now, when looking at it in Apiary, it tells me that this is a valid API Blueprint document, but it doesn't how me JSON previews for the request and response. Are structures like this even possible to represent in API Blueprint and able to render nicely in Apiary?

评论

This is a combination of two problems:

  1. incorrect syntax
  2. bug in rendering

1. Syntax

The problem seems to be here:

## Webhook Collection (object)
+ data: array[Webhook Response Base] (array[Webhook Response Base], required) - An array of Webhook objects.

Looking at + data: array[Webhook Response Base] (array[Webhook Response Base]). Basicaly when a value is expected (after the :) a value should be provided. Instead – in this case – you have there a type array[Webhook Response Base].

Let me demonstrate on a simpler example:

+ data: number (array[number])

is incorrect.

Correct version would be

+ data: 42 (array[number])

or

+ data (array[number])
    + 42

or

+ data (array)
    + 42 (number)

2. Bug in rendering

Even if you would correct the blueprint it won't be rendered in Apairy. This is a bug we have discovered in our JSON renderer. It has been reported here https://github.com/apiaryio/drafter.js/issues/26 we plan to fix it ASAP.

This has been fixed now

Corrected blueprint

FORMAT: 1A

# Vend REST API 2.0

# Group Webhooks

## api/2.0/webhooks [/webhooks]

### List all Webhooks [GET]
Returns a list of Webhooks created by the authorised application.

+ Response 200 (application/json)
    + Attributes (Webhook Collection)

### Add a new Webhook [POST]
Creates a new Webhook.

+ Attributes (Webhook Base)

+ Request (application/json)
    + Attributes (Webhook Base)

+ Response 200 (application/json)
    + Attributes (Webhook Response)

# Data Structures

## Webhook Base (object)
+ url: https://example.com/webhook (string, required) - The address where webhooks requests should be submitted.
+ active: true (boolean, required) - This field can be used to inspect or edit state of the webhook.
+ types (array[Webhook Type], required) - Collection of Webhook types which should trigger Webhook event.

## Webhook Response Base (Webhook Base)
+ id: dc85058a-a683-11e4-ef46-e8b98f1a7ae4 (string, required) - Webhook `id`.

## Webhook Response (object)
+ data (Webhook Response Base, required)

## Webhook Type (object)
+ name: sales (string, required) - One of: products, sales, customers, taxes
+ version: 2.0 (string, required) - Version of the payload to be delivered. Currently the only supported value is "2.0".

## Webhook Collection (object)
+ data (array[Webhook Response Base], required) - An array of Webhook objects.

Hope this answers your question. Please let me know if a further clarification is needed.

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

相关推荐
  • 尝试使用多部分发布 D2L 主题时出现错误 302(Error 302 when trying to post D2L topic using multipart)
    问题 此问题与我昨天发布的问题有关,但我发现了更多问题,现在遇到了不同的错误。 我从 Android 中删除了代码,直接从 Java 中尝试。 我还尝试了 2 种不同的多帖子信息方式。 userContext 具有写入权限,因为我可以轻松创建模块。 我试过的一种方法: String json = "{\"IsHidden\": false, \"IsLocked\": false, \"ShortTitle\": "Test\", \"Type\": 1, \r\n" + "\"DueDate\": null, \"Url\": \"file.txt\", \r\n" + "\"StartDate\": null, \"TopicType\": 1, \"EndDate\": null, \"Title\": \"Test topic \r\n" + "content\"} \r\n"; URI uri = userContext.createAuthenticatedUri("/d2l/api/le/1.0/Orgid/content/modules/moduleid/structure/", "POST"); MultipartEntity entity = new MultipartEntity(); StringBody part1 = new StringBody
  • 如何从 Swagger API 声明生成 JSON-Schema(How to generate JSON-Schema from Swagger API Declaration)
    问题 我有使用 Swagger v 1.2 的服务的 Swagger API 声明。 我最初对 Swagger 的感觉是它非常接近 JSON Schema(Draft 3 和最近的 Draft 4),并且为请求和响应对象生成 JSON Schema 应该相对容易。 然而,虽然 Swagger 的一部分重用了 JSON Schema 结构,但结果证明它只使用了一个特性的子集,并且它还在 Models 中引入了自己的继承(使用subTypes和discriminator )。 问题:是否有任何现有项目或代码段可以从 Swagger API 声明生成可用的 JSON 模式? 最佳 JSON Schema Draft 4 并使用 Python(但我很乐意找到任何东西)。 回答1 在与使用 Swagger 指定 REST API 并在相关测试套件中重用它的更长时间斗争之后,我将分享我自己的经验(回答我自己的问题)。 Swagger 仅支持 JSON Schema Draft 4 的子集 Swagger 1.2 和 2.0 状态的规范,它仅支持 JSON Schema Draft 4 (s. here) 的子集。 这意味着: 不能依赖,Swagger 可以完全支持每个有效的 JSON 模式。 考虑到 XML,Swagger 仅支持 JSON Schema Draft 4 提供的 JSON
  • Swift中结构体(structures)和类(classes)的选择
    在Swift中结构体和类有很多相似的特性,结构体似乎是swift中一个非常常用的数据类型,而类在oc中是最习惯使用的类型,开发中对类和结构体如何抉择呢? 首选结构体 尽量使用结构体来描述你的数据结构 swift中的结构体有很多其他语言的结构体所不具备的:可以包含储存属性、计算属性、方法;遵循协议;Swift的标准库和Foundation的基本类型大量使用了结构体,如数字、字符串、数组、字典 结构体是值类型,而类是引用类型,结构体对全局的其他作用域是不可见的,除非你特地去实现这个功能。所以你可以更放心的对局部的结构体进行修改而不担心影响到整体代码的逻辑。 使用类获取OC特性 使用类获取OC已经成熟的组件功能,如处理数据的OC API、对特定类层次结构的OC类进行子类化 使用类来区别引用 因为类是引用类型,不同类实例的每个储存属性相同的值时,恒等运算符仍然会视他们为不同。这样的作用是,引用类型对全局共享一个实例的其他作用域是可见的,即内容的修改会影响到其他的引用的内容。 通常在一些文件操作句柄的类、网络连接的管理类、硬件中介类等使用类的类型比较合适。 使用结构体作为一个值 当不需要判断两个值是否是同一个引用时,首选结构体类型。如网络请求中,我们无需关心服务端实际数据的准确性,只需要把响应体中的数据作为实体类来解释即可,如: struct PenPalRecord { let myID
  • ServiceStack 支持在每次调用的基础上有条件地从 REST 响应中省略字段(ServiceStack support for conditionally omitting fields from a REST response on a per-call basis)
    问题 <TL;DR> 至少,我正在寻找一种方法来有条件地排除资源上的某些属性,使其不包含在每次调用的响应中(请参阅下面的fields )。 理想情况下,我想使用 ServiceStack 实现一个 REST 服务,该服务支持以下所有要点。 更新虽然我真的很喜欢 ServiceStack 的一般方法,并且如果可能的话更愿意使用它,但如果它不是特别适合这些想法,我宁愿不向后弯腰混蛋以使其工作。 如果是这种情况,任何人都可以指出另一个可能更合适的 c# 框架吗? 当然,我自己也在积极探索其他选择。 </TD;DR> 在这个题为设计 REST + JSON APIs的演讲中,演示者描述了他的JSON资源引用策略(通过资源的href属性)。 除此之外,他还描述了两个查询参数( fields和expand ),用于控制对 REST 服务的调用的响应包含哪些数据。 我一直在尝试深入研究 ServiceStack 框架以实现对特定fields支持,但没有成功,但迄今为止没有成功。 这在 ServiceStack 中目前可行吗? 理想情况下,该解决方案与格式无关,因此可以跨所有 ServiceStack 支持的输出格式工作。 我想expand会遵循相同的策略。 我将在此处描述这些功能,但我认为链接中的谈话可以更好地解释它们。 比方说,我们有以下属性的档案资源: givenName , surname
  • 在不使用 Firebase API 的情况下需要 Nest REST API 的工作示例(Need Working Example of Nest REST API without using Firebase API)
    问题 我正在努力寻找一个使用普通休息将数据写入 Nest Thermostat API 的工作示例。 尝试编写 C# 应用程序,但无法使用 Firebase。 到目前为止发布的多个 Curl 示例不起作用。 我有一个有效的 auth_token,可以毫无问题地读取数据。 找到正确的帖子网址是难以捉摸的。 任何人都可以提供帮助吗? 像这样的例子 curl -v -X PUT "https://developer-api.nest.com/structures/g-9y-2xkHpBh1MGkVaqXOGJiKOB9MkoW1hhYyQk2vAunCK8a731jbg?auth=<AUTH_TOKEN>" -H "Content-Type: application/json" -d '{"away":"away"}' 不要更改任何数据。 回答1 两件事情。 首先,使用 -L 跟踪重定向。 二、直接放到away数据位置,像 curl -v -L -X PUT "https://developer-api.nest.com/structures/g-9y-2xkHpBh1MGkVaqXOGJiKOB9MkoW1hhYyQk2vAunCK8a731jbg/away?auth=<AUTH_TOKEN>" -H "Content-Type: application/json" -d '"away
  • requests源码阅读
    目录1、项目结构2、api模块3、sessions4、models5、adapters 模块6、小技巧6.1 json缩进输出6.2 structures6.3 status_codes6.4 hook参考链接requests是一个简洁易用的http-client库,早期在github的python项目受欢迎程度可以排名TOP10。介绍这个项目,我个人觉得还是官方的地道: Requests is an elegant and simple HTTP library for Python, built for human beings. 夸张到是人类就会使用requests)。我们一起阅读一下其源码,学习它是如何实现的。整篇文档分下面几个部分:项目结构api 模块sessions 模块models 模块adapters 模块小技巧1、项目结构本次阅读代码版本是 2.24.0, 从github上clone项目后,使用log命令查看历史信息,找到tag=2.24.0的标签,切换版本:git checkout 0797c61fd541f92f66e409dbf9515ca287af28d2可以使用下面的方法简单判断一下代码量,这样阅读完成后会更有成就感。requests git:(0797c61f) ✗ find requests -name "*.py" |xargs cat|grep
  • 如何测试控制器帖子:使用 rspec 在 rails 上创建 JSON api?(How to test Controller post :create of JSON api on rails using rspec?)
    问题 我一直在撕裂我的头发,试图通过测试。 我有一个如下所示的 JSON API: { "data": [ { "id": "b99f8173-0492-457f-9de9-6c1d8d6832ed", "type": "manufacturer_organizations", "attributes": { "account_number": "random test 123" }, "relationships": { "organization": { "data": { "id": "fb20ddc9-a3ee-47c3-bdd2-f710541ff89c", "type": "organizations" } }, "manufacturer": { "data": { "id": "1", "type": "manufacturers" } } } },... 我正在尝试post :create一个post :create在 rails 中post :create测试。 let!(:manufacturer_organization) {FactoryGirl.create(:manufacturer_organization)} let(:manufacturer_organization2) { FactoryGirl.create(:manufacturer
  • 使用Rails 3.2.11和RSpec发布原始JSON数据(POSTing raw JSON data with Rails 3.2.11 and RSpec)
    问题 为了确保我的应用程序不容易受到此漏洞的攻击,我试图在RSpec中创建一个控制器测试来对此进行介绍。 为了做到这一点,我需要能够发布原始的JSON,但是我似乎还没有找到一种方法来做到这一点。 在进行一些研究时,我确定至少曾经有一种使用RAW_POST_DATA标头的方法,但这似乎不再起作用: it "should not be exploitable by using an integer token value" do request.env["CONTENT_TYPE"] = "application/json" request.env["RAW_POST_DATA"] = { token: 0 }.to_json post :reset_password end 当我查看params哈希时,标记根本没有设置,它只包含{ "controller" => "user", "action" => "reset_password" } 。 在所有情况下,尝试使用XML或什至仅使用常规发布数据时,我都得到相同的结果,似乎没有设置时间。 我知道最近的Rails漏洞改变了参数散列的方式,但是仍然有办法通过RSpec发布原始数据吗? 我可以以某种方式直接使用Rack::Test::Methods吗? 回答1 据我所知,在控制器规格内不再可以发送原始POST数据。 但是
  • REST API 过滤器操作符最佳实践(REST API filter operator best practice)
    问题 我正在构建一个使用filter参数来控制搜索结果的 REST API。 例如,可以通过调用以下方法来搜索用户: GET /users/?filter=name%3Dfoo 现在,我的 API 应该允许许多不同的filter操作符。 数字运算符(例如equals 、 greater than 、 less than 、字符串运算符(例如contains 、 begins with或ends with和日期运算符(例如year of或timediff 。 此外, AND和OR组合应该是可能的。 基本上,我想支持底层 MySQL 数据库操作符的子集。 我发现了很多似乎使用自定义语法的不同实现(两个很好的例子是 Google Analytics 和 LongJump)。 看看我的要求,我可能会设计一个与 MySQL 运算符语法非常相似的自定义语法。 但是,我想知道是否有任何我应该遵循的最佳实践,以及我是否应该考虑其他任何事情。 谢谢! 回答1 您需要一种已经存在的查询语言,不要试图重新发明轮子! 通过 REST,这是一个复杂且未完全解决的问题。 您的应用程序必须满足一些 REST 约束: 统一接口/超媒体作为应用状态的引擎: 您必须向您的客户发送超媒体响应,他们必须遵循这些响应中给出的超链接,而不是自己构建请求。 因此,您可以将客户端与 URI 的结构分离。 统一接口/自描述消息:
  • 从rest api查询数据表而不用预先定义html中的表(Query datatable from rest api without pre-defining the table in html)
    问题 我想通过来自 rest API 的 post 请求查询 JSON: http://localhost/post1 param1='1' 返回以下内容: { "json_table": [ { "date": 123, "test": "hello2" }, { "date": 19, "test": "hello" }, } 然后它应该被自动填充到一个 jquery 数据表中,这里有一点描述: $('#myTable').DataTable( { ajax: '/api/myData' } ); 我不明白的是: 我如何告诉它使用参数发出发布请求如何创建表格而不必在 HTML 中预定义它,以便它完全不知道从 JSON 返回的内容,并相应地显示表格,无论“json_table”记录(从熊猫数据框 df 生成)中的任何内容.to_json(orient='记录')? 如何让它每 15 秒刷新(再次查询)并更新表? 任何建议表示赞赏。 回答1 要使用参数发出 post 请求,你可以做的是: $.ajax({ type: 'POST', dataType: "json", #define the response type as Json url: url, data: data, # make a post request with a parameter you want
  • 可可:使用相同的委托函数检查多个异步NSURLConnection是否需要?(Cocoa: Checks required for multiple asynchronous NSURLConnections using same delegate functions?)
    问题 这是参考StackOverflow问题管理多个异步NSURLConnection连接 我同时有多个异步HTTP请求。 所有这些都使用相同的NSURLConnection委托函数。 (对于每个连接,receivedData对象是不同的,如上面另一个问题中所指定。在委托中,我解析了receiveDate对象,并对这些解析后的字符串执行其他操作) 到目前为止,一切对我来说都很好,但是我不确定是否需要做任何事情来确保正确的“多线程”行为。 是否可能有两个以上的连接将同时使用委托? (我想是的) 如果是,如何解决? (可可可否自动执行此操作?) 我是否需要进行其他检查,以确保“正确”处理每个请求? 回答1 假设您正在单个线程上启动所有(异步)连接,则委托消息将全部张贴在该线程的运行循环中。 因此,委托人只需要能够处理一次处理的一条消息; 运行循环将一次传递一条消息。 这意味着尽管委托消息的顺序未知,并且下一条消息可能来自任何连接对象,但不会并行执行委托方法。 但是,如果您实际上是试图在多个线程中使用同一委托对象,而不仅仅是使用API​​的异步特性,那么您将需要处理并发委托方法。 回答2 我增强了Three20库,以实现跨多个线程的异步连接,以便即使在用户使用UI的情况下也可以获取数据。 在追查CFNetwork框架中检测到的随机内存泄漏很多小时之后,我终于引起了该问题。
  • ServiceStack support for conditionally omitting fields from a REST response on a per-call basis
    <TL;DR> At a minimum, I'm looking for a way to conditionally exclude certain properties on the resource from being included in the response on a per-call basis (See fields below). Ideally, I'd like to implement a REST service with ServiceStack that supports all the major points below. UPDATE While I really like ServiceStack's approach in general and would prefer to use it if possible, if it isn't particularly well suited towards these ideas I'd rather not bend over backwards bastardizing it to make it work. If that's the case, can anyone point to another c# framework that might be more
  • 如何在Android中使用HTTPClient在JSON中发送POST请求?(How to send POST request in JSON using HTTPClient in Android?)
    问题 我试图弄清楚如何通过使用HTTPClient从Android发布JSON。 我试图解决这一问题已有一段时间,我在网上找到了很多示例,但是我无法使用其中的任何示例。 我相信这是由于我总体上缺乏JSON /网络知识。 我知道那里有很多示例,但是有人可以指出我的实际教程吗? 我正在寻找包含代码的逐步过程,并解释为什么执行每个步骤或该步骤执行的操作。 不需要很复杂,简单就足够了。 再说一次,我知道那里有很多例子,我只是在寻找一个例子,解释一下到底发生了什么以及为什么这样做。 如果有人知道一本关于Android的好书,那么请告诉我。 再次感谢@terrance的帮助,这是我在下面描述的代码 public void shNameVerParams() throws Exception{ String path = //removed HashMap params = new HashMap(); params.put(new String("Name"), "Value"); params.put(new String("Name"), "Value"); try { HttpClient.SendHttpPost(path, params); } catch (Exception e) { // TODO Auto-generated catch block e
  • 在Swift中进行REST API调用(Make REST API call in Swift)
    问题 我正在尝试使用Swift来对REST API进行GET调用,并且试图遵循众多教程,但无法弄清楚。 要么是因为我无法弄清楚如何将所有Obj-C都转换为Swift,要么是因为不赞成使用n'这样的方法的一半。 有谁知道如何进行调用以及解析返回的JSON数据? 回答1 您可以这样: var url : String = "http://google.com?test=toto&test2=titi" var request : NSMutableURLRequest = NSMutableURLRequest() request.URL = NSURL(string: url) request.HTTPMethod = "GET" NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil let jsonResult: NSDictionary! = NSJSONSerialization
  • 想要将Twitter上的好友列表显示到iPhone应用程序中(want to display Friends list from twitter into iPhone app)
    问题 我正在使用适用于iOS 5的Twitter和Accounts Framework。问题是我无法使用http://api.twitter.com/1/friends/ids.json?screen_name=%@“此api获取朋友列表但是从twitter api explorer,我得到了朋友列表(twitter explorer api = https://dev.twitter.com/console)。 回答1 我正在使用适用于iOS的Twitter Native Framework。 要从Twitter获取朋友列表,您可以采用这种方式(四个步骤)。 将Twitter和Accounts Framework添加到项目中。 获取当前的Twitter帐户实例。 然后,您将通过API请求从Twitter获取“朋友ID”列表。 最后,您可以通过ID获取好友名称或其他数据,并将其放入Array中 所以...您的.h文件应该看起来像这样 #import <UIKit/UIKit.h> #import <Twitter/Twitter.h> #import <Accounts/Accounts.h> @interface LoginView : UIViewController{ ACAccount *myAccount; NSMutableString *paramString
  • 如何从Java的SOAP响应中提取数据?(How to extract data from a SOAP response in Java?)
    问题 我设置了一个客户端,以将请求发送到国家气象局SOAP服务器。 我正在收到期望的答复,但是我不确定从中提取所需数据的最佳方法。 例如,XML(在SOAPBody中)有很多额外的数据,但是我只想获取我为POJO设置的参数(例如温度)的数据。 提取此数据的最佳方法是什么? 回答1 我开始尝试像您描述的那样手工使用SOAP Web服务-有更好的方法。 那里有可以为您完成所有工作的库-无需手动解析任何内容。 查看JAX-WS。 大多数现代IDE(当然是Netbeans和Eclipse)也都提供了指向和单击的支持,以在给定WSDL的情况下构建Web服务客户端。 这条路线上最大的潜在问题是,如果没有WSDL,或者WSDL错误,在这种情况下,我链接的工具可能会遇到问题。 下一个最安全的方法是使用XML解析器,例如JAXP的SAX和DOM等(它们就在您的JRE中)来解析响应,然后遍历所涉及的数据结构。 最终,您可以使用split或regexes进行字符串黑客攻击,但是在这条路上存在着很多潜在的麻烦-XML规范还有嵌套标签的更多内容。 回答2 强烈建议您不要尝试手动解码SOAP :) 只是为了扩展@Brabster所说的内容,Netbeans拥有广泛的Web服务支持,尤其是使用JAX-WS库。 http://www.netbeans.org/kb/60/websvc/jax-ws.html
  • 什么是HMVC模式?(What is the HMVC pattern?)
    问题 阅读Kohana的文档,我发现3.0版本的主要区别在于它遵循HMVC模式,而不是像2.x版本那样遵循MVC模式。 Kohana的文档中有关此内容的页面以及Wikipedia上的页面并没有真正给我一个清晰的主意。 那么问题来了:HMVC模式是什么?它与MVC有何不同? 回答1 Sam de Freyssinet(Kohana开发人员之一)写了一篇相当深入的文章,内容关于HMVC,它是什么以及如何使用它。 链接已死:新链接-https://web.archive.org/web/20160214073806/http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/ 回答2 我目前正在开发自己的名为Alloy的PHP 5.3 HMVC框架。 由于我在HMVC上进行了大量投资并出售,因此我认为我可以提出不同的观点,也许可以更好地解释为什么应使用HMVC及其带来的好处。 使用HMVC架构的最大实际好处是内容结构的“小部件化”。 例如注释,评级,Twitter或博客RSS feed显示或电子商务网站的购物车内容显示。 它本质上是一项内容,需要根据主HTTP请求的上下文,在多个页面上显示,甚至可能在不同的位置显示。 传统的MVC框架通常无法为这些类型的内容结构提供直接的答案
  • 如何使用Gmail API快速发送电子邮件(How send Email using Gmail api in swift)
    问题 Gmail Api没有关于如何执行此操作的明确文档,我一直在尝试此操作,但是有很多事情在进行中。 我一直在寻找外部资源。 源1和源2。第一个似乎使用了api的潜力,使用函数queryForUsersMessagesSendWithUploadParameters 。 而第二个大约更多。 尽管在Objective-C中这不是问题,但GTMMIMEDocument对象除外,该对象不知道从何处或从何处获得它或一个库。 我的问题是,是否有人在某种程度上更简洁和/或更易于理解的代码,或者是发送电子邮件的更好指南? 回答1 我找到了解决方案 class func sendEmail() { var gtlMessage = GTLGmailMessage() gtlMessage.raw = self.generateRawString() let appd = UIApplication.sharedApplication().delegate as! AppDelegate let query = GTLQueryGmail.queryForUsersMessagesSendWithUploadParameters(nil) query.message = gtlMessage appd.service.executeQuery(query, completionHandler: {
  • 一种基于SIP代理服务器的事务匹配算法研究
    1 引言 随着网络技术的发展,出现了许多新的基于网络的服务,VoIP就是其中非常重要的一项。用于实现VoIP的协议主要包括H.323、SIP(Session Initiation Protocol,会话发起协议)和MGCP(Media Gateway Control Protocol,媒体网关控制协议),而SIP又是其中最有发展前景的一个协议。SIP是由IETF(Internet工程任务组)提出的IP电话信令协议。基于SIP协议标准,整合传统的语音及增值服务,并提供最新的即时通信服务以及IP网络上的视频服务,并且可以为其他更多的增值应用服务提供一个标准的具有高扩展性的平台。系统平台完全采用Internet的分布式的体系结构,具有高度的灵活性和可扩展性。正是由于SIP这一系列的优点,使得其广泛应用于下一代网络中,成为下一代网络的标准协议之一。 代理服务器是SIP系统中的一个非常重要的元素,负责接收用户代理发来的请求,根据网络策略将请求发给相应的服务器,并根据收到的应答对用户作出响应。它可以根据需要对收到的消息改写后再发出(SIP代理服务器如图1)。一般来说,一个SIP代理服务器会同时收到许多呼叫请求和应答,代理服务器必须维护与Call相关的所有信息,例如Call、Dialog、Transaction等。而一个有状态的代理服务器又可以“分支”一个请求,路由它到多个地点
  • 【ODX标准ISO22901-1】ASAM_AE_MCD-2_D_BS_ODX_V2-2-0.pdf第七章_ODX数据模型(ODX DATA MODEL)
    ODX数据模型(ODX DATA MODEL) 来源:ASAM_AE_MCD-2_D_BS_ODX_V2-2-0.pdf 第七章:ODX DATA MODEL 7.1一般建模原则(GENERAL MODELING PRINCIPLES) 7.1.1COMMON MEMBERS SHORT-NAME标识一个ODX对象。它的长度限制为128个字符。一个简短的名字由字母、数字和“_”字符组成。下面的表达式描述了短名称的语法:[a-zA-Zo-9]+。 LONG-NAME是对ODX对象功能的简短描述。它的长度限制为255个字符。在应用程序的人机界面中使用长名称而不是短名称 DESC详细描述了ODX对象的功能,并且没有长度限制。该元素是可选的,可能包含由元素<p>…的有序列表标记的几个段落。可以使用HTML中已知的标签来格式化文本:<br>/<i>/<b>/<u>/<sub>/<sup>/<ul>/<ol>/<li>。 LONG-NAME和DESC可能还有一个可选成员TI(文本标识符),它支持不同类型的文本模块的多语言。mapping技术是特定于工具/制造商的。例如,它们可能出现在外部文件中。TI属性允许在外部和内部描述之间使用mapping,可以用于语言翻译。 ELEMENT-ID用作通用类型,在整个ODX数据模型中表示上面列出的成员。使用这些公共成员的所有元素都使用这种类型的属性句柄。