Questions tagged «api»

应用程序编程接口(API)是要供其他软件使用的软件的规范。

4
如何发现未记录的功能?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我一直想知道您如何找到未公开/专用的 API? 例如Apple未公开的/私有的API,Play Station,Windows Phone 7,Win32内核,Windows API,隐藏的回调等... 黑客使用哪些工具来查找私有和未记录的功能? 在哪里可以读到人们深入研究私有API和反向工程技术的经验,这些经验揭示了API文档中通常解释的秘密? 谢谢, 阿

4
Win32 API的演变
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 Windows 32 API是否随着时间的推移发生了很大变化?1998年查尔斯·佩佐尔德(Charles Petzold)的书“ Programming Windows,第5版”是否仍包含相关信息,或者其中大部分已过时/过时? Windows 32 API的最新新增功能(如果有)有哪些突出示例?
11 books  c  windows  api 

4
我应该解析服务器上的XML还是提供代理并让浏览器解析它?
我需要与第三方API交互。使用此API,我可以从最终用户的浏览器中发出GET请求,并接收XML响应。该数据将在基于浏览器的应用程序中使用,用户可以在该应用程序中进行搜索,使用它来做出决定等。主要问题是大多数浏览器已锁定跨域XML的使用,因此我不能简单地获取API中的XML。 但是,总体数据基本上分为两组。 第一组数据是公共数据,只需要经常更新一次,因此可以为服务器端的所有用户缓存数据,从而大大减少了通信量。 第二组数据是私有的,对于每个用户而言都是个体的。此数据还会在API中更频繁地更新。这导致缓存效率大大降低。 出于可伸缩性的原因,我想使服务器的负载尽可能小。 我面前有两个选择: 提供一个代理,该代理可用于将XML请求路由到第三方服务器,并直接在客户端和第三方API之间来回传递。 让服务器执行从XML到JSON的转换并去除不必要的信息。从本质上讲,这意味着为我们的服务器创建一个新的API,从而转化为来自第三方API的请求 向用户提供数据的最佳方法是什么?(不必是两个选项之一)
11 javascript  api  xml  websites  json 

3
通过HTTP标头传输访问令牌是否安全?
这是第一个RESTful Web服务,我担心安全性问题。通过HTTP标头传输访问令牌是否安全?例如: POST /v1/i/resource HTTP/1.1 Content-Type: application/x-www-form-urlencoded Api-key: 5cac3297f0d9f46e1gh3k83881ba0980215cd71e Access_token: 080ab6bd49b138594ac9647dc929122adfb983c8 parameter1=foo&parameter2=bar 连接已建立SSL。另外,需要定义什么作为scope每个属性access token

1
有关隧道的REST API规则
只需在REST API规则手册中阅读以下内容:不得使用GET和POST来传送其他请求方法。 隧道是指对HTTP的任何滥用,它们会掩盖或错误表示消息的意图并破坏协议的透明性。REST API不得通过滥用HTTP的请求方法来折衷其设计,以适应具有有限HTTP词汇量的客户端。始终正确使用本节中的规则指定的HTTP方法。[我的重点] 但是随后,由于只了解和,许多框架使用隧道来通过HTML表单公开REST接口。我最近的示例是一个for flask(由框架的作者提交):http : //flask.pocoo.org/snippets/38/。<form>GETPOSTMethodRewriteMiddleware 在Web框架中没有黑客或附加组件的情况下,有什么方法可以遵守“规则”?
11 api  rest  web-framework  http 

2
警报系统架构
我想创建一个系统,处理来自各种程序的警报消息,并可以通过电子邮件将这些警报处理给顺风顺水的消费者。所有这些都将包含在一个内部网络中。 我想我希望基本架构看起来像这样: 我目前主要关心的是“消息处理程序”位,这就是我的“ API排序”。我希望该系统的所有组件将数据发送到API,该API处理所有对数据库的写入。我认为这种方法比较容易,因为它简化了安全性,并允许我将许多更复杂的数据库查询包含在一个程序中。 令人担心的是,我希望这与语言无关,这意味着任何代码都应能够将消息发送到我的处理程序,由它来解释它们。我希望通过JSON平面文件-或通过对该程序的REST调用(为下游应用程序提供灵活性)来做到这一点。 我的问题是 我应该烦恼消息处理程序吗?或者它会增加简单性,使其仅允许直接数据库访问下游应用程序以及其他两个组件(管理控制台和警报管理器)? 这样,他们就可以插入想要的任何警报-只要将INSERT插入数据库表中即可。 我不是专业的软件设计师,所以请原谅-我只想在业余时间做一个项目。

3
如何通过Symfony使用外部RESTful API?
我们正在为我们的项目构建微服务架构,其中大多数前端Symfony应用程序与后端RESTful API进行交互。 问题在于,这种方法打破了严重依赖带有数据库的Doctrine的Symfony实体管理。Symfony通常使用Doctrine处理实体,从而使大部分工作自动化,而当我们必须从API访问外部数据时,就很难轻松地重现这一点。 例如,对于客户实体: 使用Doctrine,我们只需要定义Client类,现在就可以轻松地创建,更新和检索客户 使用REST API方法,可以通过API访问客户端,但是我们还有很多工作来定义如何创建(POST),更新(PUT),检索(GET)客户端等。 需要注意的是,客户端被多个应用程序使用,不仅是前端应用程序,还有专用的API。 我们是否应该使用类似于实体的方法来创建类,从而隐藏API调用的复杂性,在本地导入所有API数据并通过Doctrine或其他方式访问它们?

1
用于微控制器的RTOS的消息队列
我目前正在为微控制器编写RTOS。整个过程都是用C ++ 11编写的-如果有人感兴趣,则指向存储库的链接在底部。 当前,我正在编写一个类,该类是一个简单的数据队列,用于在线程之间(或在中断处理程序和线程之间或中断处理程序和其他中断处理程序之间)传递对象。通常,我尝试遵循在其他项目上找到的一些常见API,但是我没有找到具有emplace()功能并支持超时的并发队列的任何示例。 我一般的“问题”是我无法在这两个接口之间做出决定: (std::chrono::duration<Rep, Period>是模板化类型,为清晰起见,我省略了模板样板) 第一版: template<typename T> class FifoQueue { public: ... template<typename... Args> int tryEmplaceFor(std::chrono::duration<Rep, Period>, Args&&... args); int tryPopFor(T&, std::chrono::duration<Rep, Period>); int tryPushFor(const T&, std::chrono::duration<Rep, Period>); int tryPushFor(T&&, std::chrono::duration<Rep, Period>); ... } 第二版: template<typename T> class FifoQueue { public: ... template<typename... Args> int tryEmplaceFor(std::chrono::duration<Rep, Period>, …

5
REST API概念
我有三个关于REST API设计的问题,希望有人能对此有所启发。我已经不懈地搜索了多个小时,但没有在任何地方找到我的问题的答案(也许我只是不知道要搜索什么?)。 问题1 我的第一个问题与动作/ RPC有关。我已经开发了REST API已有一段时间了,我习惯于从集合和资源的角度思考事物。但是,我遇到了一些似乎没有适用该范式的案例,并且我想知道是否有一种方法可以将其与REST范式进行协调。 具体来说,我遇到一种情况,即修改资源会导致生成电子邮件。但是,稍后用户可以特别指出他们想重新发送之前发送的电子邮件。重新发送电子邮件时,不会修改任何资源。状态没有改变。这只是一个需要发生的动作。该操作与特定的资源类型相关。 将某种动作调用与资源URI(例如/collection/123?action=resendEmail)混合使用是否合适?指定动作并将资源ID传递给它(例如/collection/resendEmail?id=123)会更好吗?这是错误的做法吗?传统上(至少使用HTTP)执行的动作是请求方法(GET,POST,PUT,DELETE),但实际上不允许使用资源进行自定义动作。 问题2 我使用URL的querystring部分来过滤查询集合时返回的资源集(例如/collection?someField=someval)。然后,在我的API控制器中,我确定将与该字段和值进行哪种比较。我发现这真的行不通。我需要一种允许API用户指定他们想要执行的比较类型的方法。 到目前为止,我想到的最好的主意是允许API用户将其指定为字段名称的附录(例如/collection?someField:gte=someval-表示它应返回someField大于或等于(> =)someval的资源。这是一个好主意吗?是一个坏主意?如果是,为什么?有没有更好的方法可以让用户指定要对给定字段和值执行的比较类型? 问题3 我经常看到URI的那样子像/person/123/dogs拿到person小号dogs。我通常避免这样的事情,因为最后我发现通过创建类似的URI,您实际上只是在访问dogs按特定personID 过滤的集合。等同于/dogs?person=123。真的有充分的理由使REST URI的深度超过两个级别(/collection/resource_id)吗?
10 api  rest 

6
针对REST服务器测试REST客户端。夹具怎么做?
在编写单元测试时,通常使用固定装置:可测试的数据很少,因此我们可以说:1.让所有客户都应该包括Willy Wonka。2.删除客户端3,现在获取客户端不应再包括Willy Wonka。 单元测试很好。使用设置/拆卸来重新加载固定装置或回滚事务。因此,测试可以在事务内部完成创建,更新和删除操作。新的临时数据仅持续测试时间,然后被重置。 但是,当我们将REST服务器与REST客户端分离时该怎么办? 我们要确保REST客户端不仅正确读取,而且正确创建,更新和删除。 对于如何针对远程测试REST服务器执行此操作,我找不到任何示例或建议。 假设我有一个仅测试灯具的测试REST服务器。HTTP的整个无状态性质意味着很难发送“ BEGIN TRANSACTION”和“ ROLLBACK TRANSACTION”或“ RELOAD FIXTURES”类型的消息,对吗? 我不能成为第一个这样做的人,所以我觉得我需要以不同的方式来思考这个问题。 有什么建议么?
10 unit-testing  api  rest 

1
生成Web服务的商业许可证密钥
背景 我有一个关于基于Web的软件许可的业务问题。许多网站都提供软件作为各种API的服务。一个很好的例子是Google的Custom Search API。使用Web服务的过程通常类似于: 帐户。用户创建一个帐户。 服务器。用户定义将发出API请求的服务器的IP地址。 键。用户收到所需API的公共API密钥。 指南。向用户提供了文档,该文档显示了如何使用API​​密钥进行请求。 测试。用户可以发出测试请求以验证集成功能。 帐单。用户付费激活帐户。 生产。用户将Web服务集成到他们的应用程序中。 停用。过期,超过请求限制等时,系统将停用帐户。 这些要求是与许可服务集成的补充。 问题 对于一家小型企业而言,这是很多工作。 问题 有哪些现成的开源项目可以解决此问题? 如果没有此类项目,您将如何构建可行的低成本解决方案(理想情况下,每个许可证的百分比)?也就是说,对于想要获得基于Web的服务许可的小型企业(几乎没有收入或没有收入),您将使用什么软件或现有的商业服务? 谢谢! 相关链接 Web应用程序中的许可证密钥解决方案,最佳方法是什么? API管理系统

2
HTTPS是否足以避免重播攻击?
我正在为移动应用程序在服务器上公开一些REST方法。 我想避免用户可以嗅探如何构建HTTP方法(从移动应用程序),然后将其再次发送到服务器。范例: 移动应用发送请求 用户使用代理,可以检查网络上发生了什么 用户看到并保存手机刚刚发送的请求 =>现在,我不希望用户能够手动发送该请求 是否足以通过HTTPS保护服务器?
10 api  https 

1
Google AJAX Search API发生了什么
我想查询主要的Google搜索,但是包括stackoveflow在内的所有引用都指向Google AJAX Search API。 奇怪的是,它似乎已经不存在了,甚至没有说明它已贬值的注释? 旧链接指向主要的Google代码网站。如果我在该站点上查看API列表,则替换为该API的是Web Search API(已弃用),该Web链接返回同一页面,但不链接到同一页面,但不是Google AJAX Search API。 进一步的Google搜索也无济于事,许多博客文章指向的Google网站(http://code.google.com/apis/ajaxsearch/)上没有内容,并重定向到同一位置? 为了证明它确实存在,我在返回机器的途中找到了它,但是最后一个快照没有显示任何特殊的异常消息。
10 api  google 


4
REST API是否应该能够将日期时间转换为适当的客户端时区?
在实施我们的API时,出现了日期时间和时区的问题。 所有日期均已标准化为数据库中的UTC。当前,在非API应用程序中,所有日期时间都是根据用户的偏好设置先转换后才呈现。 现在,对A​​PI提出了同样的问题:API是否应该能够基于请求语义返回适合时区的datetime? 例如GET /posts?timezone=America/Sao_Paulo? 还是应该在正在访问API的任何客户端上完成此操作? 更新:因为它出现了几次:当前返回带有时区的时间戳(尽管始终为TZ offset +00:00)。格式是流行的8601:2015-10-29T23:00:49+00:00
10 rest  api  time 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.