19得票5回答
如何为您的网站设置API密钥系统?

假设我有一个网站,其中包含一些可以从外部访问的信息。 这些信息需要仅由相关客户端更改。 例如:Google分析或WordPress API密钥。 我该如何创建类似的系统(无论编程语言是什么)?

461得票17回答
在API设计中,何时应该使用指针而不是引用?

我理解指针和引用的语法和一般语义,但是在API中何时更合适使用引用或指针,我应该如何决定呢? 当然,有些情况需要使用其中之一(例如,`operator++`需要一个引用参数),但总体而言,我发现我更喜欢使用指针(和常量指针),因为语法清楚地表明变量是以破坏性方式传递的。 例如,在以下代码中...

33得票5回答
为什么原始流(primitive Stream)没有collect(Collector)方法?

我正在为初学者编写一个库,因此我试图尽可能地保持API的简洁性。 我的库需要做的事情之一是对大量的int或long类型的集合执行一些复杂的计算。有许多场景和业务对象需要用户从中计算这些值,因此我认为最好的方式是使用流来允许用户将业务对象映射到IntStream或LongStream,然后在收...

8得票2回答
临时数据成员的生命周期延长和API设计

假设我有一个跨平台的 Path 类,例如: class Path { public: // ... Path parent() const; // e.g., /foo/bar -> /foo std::string const&...

9得票8回答
为什么ICollection接口没有包含Add方法?

正如标题所述,有没有人知道为什么ICollection接口不包含Add方法?很奇怪的是,泛型版本ICollection<T>有一个Add方法,但ICollection没有。深入了解此问题的任何人都会非常有帮助。 至于我为什么在意——不幸的是,构建SharePoint的开发人员从未...

7得票2回答
Java 8不允许使用现场注入(extension)方法,这个设计考虑了什么?

我们有默认方法,也被称为防御者方法和“虚拟扩展方法”。 虽然我欣赏默认方法的巨大价值(在某些方面甚至比它们的C#对应方法更强大),但我想知道不允许在没有访问其源代码的情况下扩展现有接口的决定是什么。 在他在SO上的一个答案中,Brian Goetz提到默认方法非常适合方便以及接口演进。因此...

354得票13回答
API分页最佳实践

我需要一些帮助来处理我正在构建的分页API中的一个奇怪的边缘情况。 像许多API一样,这个API对大型结果进行分页。 如果您查询/foos,则会获得100个结果(即foo#1-100)和链接/foos?page = 2,它应返回foo#101-200。 不幸的是,如果在API使用者进行下一...

62得票7回答
流畅接口是否违反了迪米特法则?

维基百科文章关于德米特法则的介绍如下: 该法则简单地表述为“仅使用一个点”。 然而,一个流畅接口的简单示例可能看起来像这样: static void Main(string[] args) { new ZRLabs.Yael.Pipeline("cat.jpg") ...

185得票6回答
使用REST删除多个记录

什么是以REST风格删除多个条目的方法? 我的用例是,我有一个Backbone Collection,在其中需要能够一次性删除多个项目。选项似乎是: 1.为每个记录发送DELETE请求(如果可能有几十个项目,这似乎是一个坏主意); 2.在URL中连接要删除的ID(即,“/records/1...

19得票3回答
在微服务环境中如何处理文件上传?

我正在考虑如何在新系统中处理用户上传的文件,包括处理时间、方式和位置。我们使用 PHP + Linux 的微服务环境进行开发,计划在未来几个月内部署上线。其中一个关键组件就是处理上传文件。 根据目前的了解,有三种处理方案可供选择(可能还有其他方案未被发现)。具体如下: (1)[CLIENT...