Questions tagged «api»

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

1
许多异步调用与对API的单次调用
我们正在开发REST API,其中的HTML5前端将通过javascript使用REST API。该应用程序供组织内部使用,通常有大约300个用户,但我们希望扩展到1000个左右的用户。 通常不会在LAN内建立与API的连接,因此连接的质量和延迟会很好,尽管不排除偶尔会在Internet上使用3G / 4G时连接速度较慢且滞后时间较长的情况。 我们认为的两个选择是: 前端将同时对API进行多次异步调用,以加载接口的各个组件。 优点:简单。 缺点:与服务器的连接更多。 前端的控制器将对API进行一次调用,将需要获取的对象作为参数传递给参数。 优点:尽管服务器将与数据库建立多个连接,但仅与服务器建立一个连接。 缺点:在前端和API中都需要机制。它使设计复杂化。 进一步说明:将有不同的资源... /产品... /位置等。可以单独获取这些资源,但是将有另一个抽象资源... / screen?Product&Locations将在一次调用中获取。
12 rest  api  ajax 



2
在源代码中隐藏API密钥的最佳方法
我需要一些有关如何保护应用程序(尤其是ac#.NET应用程序)中的私有API密钥的想法。 首先,我了解到从理论上讲不可能在源代码中隐藏任何内容,因此我想出了另一个想法,但是我不确定它的合理性。无论如何,是否有可能以某种方式与Web服务器通信以验证私钥,然后再与应用程序对话以确认它是合法的握手? 我有两个密钥可以使用:一个公共密钥(顾名思义,不必像对待私有密钥一样小心对待),以及一个私有密钥,它需要与他人保持安全。 我将如何做到这一点的任何想法将不胜感激。
12 c#  api  authentication 

1
RESTful API应该有多离散?
我以前从未构建过RESTful API,并且想知道它应该有多离散? 例如,假设我有一个客户,该客户的姓名,地址,电话号码,电子邮件地址,语言等。 是否有一种方法可以更新每个单独的字段(更新地址,更新电子邮件地址等),还是应该为整个客户提供一个单独的更新,并且每个字段都是可选的?
12 api  rest 

2
在RESTful API中实现命令模式
我正在设计HTTP API,希望使其尽可能地具有RESTful风格。 有些动作的功能会散布在一些资源上,有时需要撤消。 我以为自己,这听起来像是命令模式,但是我如何将其建模为资源呢? 我将介绍一个名为XXAction的新资源,例如DepositAction,它将通过这样的方式创建 POST /card/{card-id}/account/{account-id}/Deposit AmountToDeposit=100, different parameters... 这实际上将创建一个新的DepositAction并激活它的Do / Execute方法。在这种情况下,返回201 Created HTTP状态表示操作已成功执行。 之后,如果客户希望查看操作细节,则可以 GET /action/{action-id} 我猜应该阻止Update / PUT,因为此处不相关。 为了撤消操作,我想到了使用 DELETE /action/{action-id} 实际上将调用相关对象的Undo方法,并更改其状态。 假设我只对一次“撤消”感到满意,而无需重做。 这种方法可以吗? 有什么陷阱,不使用它的原因吗? 从客户的观点看是否明白?

3
如何记录实验性或不完整的API,例如@deprecated?
是否有一个与“不赞成使用”相似但又不同的好术语,表示方法或API已存在于代码库中,但由于其实现不完整或可能会发生变化而不应使用?(是的,我知道,这些方法不应该公开,yada yada yada。我没有创造自己的情况,我只是想尽力而为。) 人们有什么建议?实验性的,不完整的,还有其他吗? 如果我正在为该API构建仍在不断变化的javadoc文档,那么我应该使用@deprecated标记还是有更好的约定?对我而言,@ preprecated表示此API很旧,可以使用更新的首选机制。在我的情况下,别无选择,但是API中的某些方法尚未完成,因此不应使用。目前,我无法将其设为私有,但我想在文档中添加明确的警告。

2
面向Java初学者的RESTful服务的结构
就Java Web开发技能而言,我相对较新。我有一个项目,根据我对API的了解,我认为该项目可以很好地成为RESTful服务的候选人。我正在尝试了解应该如何构造的详细信息,但在谷歌搜索和阅读已有资料方面并没有真正涉足。我希望根据我对该主题的知识和假设,这篇文章能够带来一些验证和/或重定向。 我目前的假设是我的RESTful服务将具有以下结构: 数据库数据(SQL)。 一个ORM(我使用的是相对不受欢迎的ORM,称为CPO,但是对于大多数人来说,它只会被Hibernate取代)。 一个Java管理器类,其方法与ORM进行对话以获得数据 一个Java控制器类,用于处理请求映射,并用于@ResponseBody通过HTTP谓词来指导/处理URL和如何处理数据的动作(http://mysite.com/computers/dell可能GET带有单词“ dell”的请求URL中的参数是一个参数,该参数将返回有关Dell计算机的信息的JSON数组)。 该服务应使用Spring Boot进行,或者以某种方式能够独立存在并且独立于任何其他应用程序。 现在假设以上内容是正确的,那么我将(在非常基本的水平上)拥有一个RESTful服务,任何应用程序都可以使用该服务来使用和使用数据。 所以说我有了我的Web应用程序。假设我正在制作一个有关计算机硬件信息的Web应用程序,而我正在使用Spring来构建此Web应用程序。这是我的假设: 作为JSP,我会有很多看法,而这些JSP包含HTML,CSS和JavaScript。JavaScript将根据需要处理对此应用程序控制器的AJAX调用(如下)。 该Web应用程序还将拥有自己的控制器来处理应用程序的URL请求和路由,然后该控制器将使用该ModelAndView对象或类似的东西与RESTful服务的控制器“对话”,获取正在传递的任何数据,然后将该数据传递回视图(JavaScript,JSP等)进行显示。 我在这里吗?我知道RESTful服务也有一个身份验证方面,但是从概念上讲我还不存在(我的项目将在专用网络中使用,因此此时安全性不是优先事项)。 非常感谢任何见解,批评,知识,反馈或澄清。

2
如何设计API端点以发布子对象并获取所有父母的所有孩子?
例如,我有以下实体:客户,报告。客户可能有很多报告,我认为单个报告管理的端点应该像这样嵌套: /clients/{client_id}/reports/{report_id} 至于一位客户的所有报告,预期会: /clients/{client_id}/reports 但是应该如何寻找一个端点来获取所有客户端的所有报告,以保持API的一致性和良好的设计。 我的方法: (我在某些Google API中看到了它)使用“-”代替它,并将其解析为“全部”: /clients/-/reports 这使端点格式保持不变,但看起来有点不正常,找不到任何以此方式建议的rfc。 为所有报告创建一个单独的端点: /reports 但是要获得客户报告,它仍然是: /clients/{client_id}/reports 重构端点以使“客户端”不是父代,而只是一个过滤器参数: /reports?client={client_id} -一位客户的报告 /reports -所有客户的报告 如果添加新的端点以发布特定客户端的报告,则该外观可能很难看,因为它将是带有URL中参数的POST请求。 还有其他建议吗?
12 rest  api  api-design 

3
在JSON密钥中使用连字符是不好的做法吗?
我看到很多问题都与访问使用连字符(kebab-case)的JSON密钥有关,但是现在我发现自己想知道应该在我的密钥中坚持使用camelCase还是snake_case。我知道连字符在语言之间移植时也会产生复杂的映射。我已经看到一些JSON反序列化库将这些键转换为camelCase样式。 例: var something = { "some-value": 'thing' } VS var something = { "someValue": 'thing', "some_other_value": 'thing_two' }

4
MVC和RESTful API服务
MVC非常简单。有一个模型,一个控制器和一个视图。当我们创建一个网站时,这一切都将作为一个整体' 客户端向服务器发送REST关键字请求->服务器将请求的URL与控制器操作相匹配->然后调用模型进行数据收集/处理,以获取结果->并将结果作为HTML页面(视图)返回给客户端。 如果我们正在谈论纯RESTful API Web服务该怎么办?然后,流程类似于“ 客户端向服务器发送REST关键字请求->服务器将请求的URL匹配到控制器操作->然后调用模型进行数据收集/处理,获得结果->并返回结果以JSON ' 返回给客户端。与以前相同,但是没有“视图” ...或者,可以将生成的JSON视为“视图”。从某种意义上讲,我们仅在利用MVC的MC部分。那是应该怎么做的?还是对于仅API服务而不是MVC还有其他更合适的模式吗?

7
在枚举中具有特殊值“ ALL”是一种好习惯吗
我正在微服务环境中开发一项新服务。这是一个REST服务。为了简单起见,假设路径为:/ historyBooks 此路径的POST方法将创建一个新的历史记录。 假设一本历史书涵盖了一个或多个历史时期。 为简便起见,我们假设我们只有以下人类历史时代: 古 后古典 现代 在我的代码中,我想用来表示它们enum。 方法的主体(有效负载)为JSON格式,并且应包含字段名称eras。此字段是era本书涵盖的值列表。 身体可能看起来像: { "name": "From the cave to Einstein - a brief history review", "author": "Foo Bar", "eras": ["Ancient", "Post Classical", "Modern"] } 在此特定服务中,业务逻辑是: 如果输入中未提供任何时代,则认为本书涵盖了所有时代。 在API审查中,提出了一个建议:为ERAS枚举 包含另一个值ALL,以明确表明已覆盖所有时代。 我认为它有一些优点和缺点。 优点: 显式输入 缺点: 如果提供了列表中的两项,请说ALL和Ancient-从应用程序中获取什么?我想这ALL应该覆盖其他值,但这是新的业务逻辑。 如果我运行查询,对于涵盖特定时代的图书,我将如何代表涵盖所有时代的图书?如果ALL还用于输出(使用相同的逻辑),则用户有责任将其解释ALL为["Ancient", "Post Classical", "Modern"]。 我的问题 我认为拥有新事物ALL比根本没有造成更多的混乱。 你怎么看?您是否要添加此ALL值或不使用它而保留API?
11 rest  api  json  enum 

5
Java的Boolean类-为什么不使用枚举?
在我看来,布尔类是作为枚举实现的理想候选者。 从源代码来看,大多数类都是静态方法,可以将其不变地移至枚举,其余的则变得像枚举一样简单。比较原始(删除注释和静态方法): public final class Boolean implements java.io.Serializable, Comparable<Boolean> { public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); private final boolean value; public Boolean(boolean value) { this.value = value; } public Boolean(String s) { this(toBoolean(s)); } public boolean booleanValue() { return value; …
11 java  api  source-code 

4
是否有用于确定国会选区的API?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我正在根据用户提供的地址确定国会选区。这将避免让用户自己查找。 是否存在此类API? 注意 通过我的尝试,我只遇到了以下问题: http://www.govtrack.us/developers/api (但是不确定如何提交地址或邮政编码) API中提供以下资源 ... 1973年以来在美国国会(第93届国会)上的法案和决议。 ...一对(帐单,人员),表示共同赞助,并有加入和退出日期。 ……建国以来的国会议员和美国总统。 ...任期由国会议员和美国总统担任。每届任期与一次选举相对应,这意味着众议院每届任期为两年(一个“国会”),总统任期为四年,而参议院为期六年(三个“国会”)。 ...自1789年以来在美国国会进行的投票表决。人们如何通过Vote_voter API进行投票。 ...自1789年以来人们如何在美国国会进行唱名表决。请参阅Vote API。筛选投票字段以获得特定投票的结果... http://www.opencongress.org/api (似乎是一种查找国会信息的方法,但不是地区) 该API为程序员提供了对OpenCongress上所有数据的结构化访问,从官方账单信息到新闻和博客报道,再到用户生成的账单投票等等,... 该API默认为返回XML。所有查询也可以返回JSON ... https://groups.google.com/forum/?fromgroups=#!topic/opendems-discuss/CeKyi_aANaE (类似的问题,无解决方法) 我一直在研究Open Dems,看看此时暴露了什么,没有发现什么。我与国外民主党人合作,并且对使用实验室中的网站作为他们的网站感兴趣。 我迅速查看了Precinct API,该API的功能比我需要的多或少。理想的资源是至少将地址转换为CD的任何方式(获取州地区数据也将是很好的),因为这将使DA的会员更容易在上个月的NY26比赛等比赛中发挥作用。 。 更新资料 我正在寻找govtrack.us网站的资源,“ doGeoCode”功能可能会有用。 查看源代码:http://www.govtrack.us/congress/members 如果没有人提出任何建议,我将尝试脱离他们的所作所为。
11 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.