Questions tagged «api»

请勿使用:标记您要使用的库,[api-design]或其他合适的方法。要求我们推荐或找到API的问题是题外话。

5
自定义授权HTTP标头
当客户端向API发送请求时,我需要对客户端进行身份验证。客户端具有API令牌,我正在考虑使用标准Authorization标头将令牌发送到服务器。 通常,此标头用于Basic和Digest身份验证。但是我不知道是否允许自定义此标头的值并使用自定义的身份验证方案,例如: Authorization: Token 1af538baa9045a84c0e889f672baf83ff24 你会推荐吗?还是有更好的发送令牌的方法?



9
如何在Swagger UI中发送带有请求的自定义标头?
我在API中一些端点- ,。/user/login/products 在扬鞭UI我交的email,并password以/user/login和为响应我收到一个token字符串。 然后,我可以从响应中复制令牌,并希望将其用作Authorization请求中的标头值到所有url(如果存在),并/products作为示例。 我应该在Swagger UI页面上的某个位置手动创建文本输入,然后将令牌放到那里并以某种方式注入请求中,或者是否有工具可以更好地管理它?

8
从Guzzle捕获异常
我正在尝试从正在开发的API上运行的一组测试中捕获异常,并且正在使用Guzzle消费API方法。我已经将测试包装在try / catch块中,但是它仍然引发未处理的异常错误。按照他们的文档中所述添加事件侦听器似乎没有任何作用。我需要能够检索HTTP代码为500、401、400的响应,实际上不是200的任何内容,因为如果系统不起作用,系统会根据调用结果设置最合适的代码。 当前代码示例 foreach($tests as $test){ $client = new Client($api_url); $client->getEventDispatcher()->addListener('request.error', function(Event $event) { if ($event['response']->getStatusCode() == 401) { $newResponse = new Response($event['response']->getStatusCode()); $event['response'] = $newResponse; $event->stopPropagation(); } }); try { $client->setDefaultOption('query', $query_string); $request = $client->get($api_version . $test['method'], array(), isset($test['query'])?$test['query']:array()); // Do something with Guzzle. $response = $request->send(); displayTest($request, …

8
从纬度经度查找时区[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 6年前关闭。 改善这个问题 是否有可用的图书馆(甚至更好的Web服务)可以将纬度/经度转换为时区?

6
RESTful API运行时可发现性/ HATEOAS客户端设计
对于我参与的SaaS初创公司,我正在使用RESTful Web API和在使用它的不同平台上构建了几个客户端应用程序。我想我已经弄清楚了API,但是现在我转向客户。当我阅读有关REST的文章时,我发现REST的关键部分是发现,但是关于发现真正含义的两种不同解释之间似乎存在很多争论: 开发人员发现:开发人员将大量API详细信息硬编码到客户端,例如资源URI,查询参数,受支持的HTTP方法以及他们通过浏览文档并试验API响应而发现的其他详细信息。恕我直言,这种类型的发现需要很酷的链接和API版本控制问题,并导致客户端代码与API的硬耦合。似乎没有比使用有据可查的RPC收藏更好的了。 运行时发现-客户端应用程序本身能够以很少或没有带外信息(大概只有API所处理的媒体类型的知识)来找出所需的一切。链接可能很热。但是,要使API非常高效,似乎需要对查询参数进行大量链接模板处理,从而使带外信息重新出现。自从我还没有想到过,我可能还没有想到其他困难。在开发中达到了这一点。但是我确实喜欢松散耦合的想法。 运行时发现似乎是REST的圣杯,但是我很少看到有关如何实现这种客户端的宝贵讨论。我发现的几乎所有REST资源似乎都假定开发人员发现了。有人知道一些运行时发现资源吗?最佳做法?带有真实代码的示例或库?我正在使用PHP(Zend Framework)的一个客户端。另一个是Objective-C(iOS)。 考虑到开发人员社区中现有的工具和知识,运行时发现是否是一个现实的目标?我可以编写客户端以不透明的方式处理所有URI,但是如何最有效地执行此操作是一个问题,尤其是在低带宽连接上。无论如何,URI只是方程式的一部分。在运行时上下文中链接模板怎么样?除了发出大量OPTIONS请求外,如何交流支持哪些方法?
79 api  rest  discovery  hateoas 

3
devise的token_authenticatable安全吗?
我正在使用Rails API构建一个简单的api ,并希望确保我在这里正确。我正在使用devise来处理登录,并决定使用Devise的token_authenticatable选项,该选项会生成一个API密钥,您需要随每个请求发送该API密钥。 我将API与主干/牵线木偶的前端配对,并且通常想知道应该如何处理会话。我的第一个想法是只将api密钥存储在本地存储或cookie中,并在页面加载时检索它,但是从安全角度来看,关于存储api密钥的某些事情困扰着我。通过查找本地存储/ cookie或嗅探通过的任何请求,并无限期地模拟该用户来获取api密钥,并非容易吗?我目前正在每次登录时重置api密钥,但即使这样看起来也很频繁-每当您在任何设备上登录时,这意味着您将在其他设备上都注销,这很痛苦。如果我可以放弃此重置,我认为从可用性的角度来看它将有所改善。 我在这里可能是完全错误的(并希望我是),任何人都可以解释这种方式进行身份验证是否可靠吗?总体而言,我正在寻找一种方法,可以安全地使用户“登录”到API访问权限,而无需经常强制进行重新身份验证。

7
如何建立RESTful API?
问题是这样的:我有一个在PHP服务器上运行的Web应用程序。我想为此构建一个REST API。 我进行了一些研究,发现REST api使用带有身份验证密钥(不一定)的某些URI的HTTP方法(GET,POST ...),并且信息以HTTP响应的形式返回,信息为XML或JSON。 (我宁愿使用JSON)。 我的问题是: 作为应用程序的开发人员,我如何构建这些URI?我需要在该URI上编写PHP代码吗? 如何构建JSON对象以作为响应返回?
77 php  api  rest  authentication 


8
通过API获取我的公共IP
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 是否有某个大公司提供的公共API,可以从程序中获取我的公共IP? 我已经找到了http://ip-address.domaintools.com/myip.xml,这正是我想要的,但是不幸的是,它阻塞了Pythonurllib以及许多其他的http库,除非您欺骗了用户代理(任何做不到的事情都不能称为API)。 问题是我需要一些可能的开源库的数据,因此我们必须遵守规则。我也知道我可以像一样做print $_SERVER[REMOTE_ADDR],但是我不想使用我的库来为所有人提供流量。 那么,上面是否有类似URL的东西,但真正的API允许机器人使用?
76 api  ip 

4
如何编写用于与外部API交互的集成测试?
首先,我的知识是: 单元测试是那些测试一小段代码(大多数是单一方法)的测试。 集成测试是测试多个代码区域之间的交互的测试(希望它们已经具有自己的单元测试)。有时,被测代码的某些部分需要其他代码以特定方式起作用。这是Mocks&Stubs出现的地方。因此,我们模拟/存根代码的一部分以非常具体地执行。这使我们的集成测试可以预期地运行而没有副作用。 所有测试都应能够独立运行而无需数据共享。如果必须进行数据共享,则表明系统耦合不够充分。 接下来,我面临的情况是: 与外部API(特别是RESTful API,将通过POST请求修改实时数据)进行交互时,我了解我们可以(应该吗?)模拟出与该API的交互(在此答案中更雄辩地说),以进行集成测试。我也了解我们可以对与该API交互的各个组件进行单元测试(构造请求,解析结果,抛出错误等)。我不明白的是如何真正做到这一点。 所以,最后:我的问题。 如何测试与具有副作用的外部API的交互? 谷歌的Content API for shopping是一个很好的例子。为了能够执行手头的任务,需要大量的准备工作,然后执行实际的请求,然后分析返回值。其中一些没有任何“沙盒”环境。 执行此操作的代码通常具有相当多的抽象层,例如: <?php class Request { public function setUrl(..){ /* ... */ } public function setData(..){ /* ... */ } public function setHeaders(..){ /* ... */ } public function execute(..){ // Do some CURL request or some-such } …

4
什么是可以使用API​​从我的网站上载图片的良好的图片托管网站?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 我正在寻找一个图片托管网站,该网站允许我使用API​​将图片从自己的网站上传到其服务器上。我喜欢Imgur.com的API,但正在寻找替代方法。

2
我应该在公共API中使用UUID作为资源吗?
我正在构建一个SaaS应用程序,并希望公开与当前数据存储实现无关的资源ID(Postgres自动增量ID)。这些Stack Overflow帖子(一 两篇)表明,创建本地唯一的ID很困难,我不妨使用UUID,UUID当然可以用几乎所有语言轻松,安全地生成。 我对这种方法感到满意,但我想知道为什么找不到大型SaaS /托管播放器中的任何API都这样做吗?例如: Shopify:9位数字 Twilio:34个字符串 Twitter:20位数以上的数字 AMEE:12个字符A-Z0-9 因此,基本上没有人似乎使用UUID。这是否有原因-不是在这里发明的,更聪明的内部ID算法还是其他?就我而言,在没有任何内部算法的情况下,使用UUID是否最有意义?
76 api  rest 

5
Google Maps如何保护其API密钥?如何做类似的事情?
当前,Google要求您创建一个API密钥,该API密钥特定于将要从中提供地图的域。Google如何执行?我想做同样的事情。 我公开了用于我的服务的API,但希望允许客户端通过javascript而不是仅从服务器嵌入对API的调用。我可以用一个随机令牌来保护它,但是任何在客户端计算机上查看代码的人都可以轻易地欺骗它。 我一直都认为这个概念是不可能的,但是Google会以某种方式很好地执行它。 编辑-听起来Google确实还没有做任何令人惊奇的事情。他们的API很可能仅用于跟踪,而不能真正保证拥有钥匙的人使用他们的API。

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.