api-design相关内容

API 何时过度设计?

我讨厌使用不能让简单的事情变得简单的过度设计的 API.尽管如此,我正在为一个开源库设计一个 API,我开始觉得我陷入了过度设计的陷阱.我真的不能确定,因为,当然,我写了该死的东西,所以它的工作原理对我来说比其他任何人都更明显.从开发人员的角度来看,您的 API 可能被过度设计有哪些警告信号? 解决方案 "从开发人员的角度来看,您的 API 可能被过度设计有哪些警告信号?" 没有用例 ..
发布时间:2021-11-15 20:59:31 其他开发

我应该如何构建一个好的(网络)API

我要为一个网络应用构建一个 API,我对人们可以推荐的良好做法很感兴趣. 我已经计划将其版本化(版本 1 只能控制系统的某些方面,版本 2 可以控制更多,但这可能需要更改与版本 1 不兼容的身份验证方式),并且身份验证将与人们用于登录的标准用户名/密码不同(如果有人确实使用了恶意工具,它不会将其打开以完全模拟,只要 api 允许). 有没有人有进一步的想法,或者您使用过的具有特别好的 ..
发布时间:2021-11-15 20:59:28 其他开发

文件上传的 REST 设计

我想为文件上传服务创建一个 REST API,允许用户: 打开会话 上传一堆文件 关闭会话 然后,回来处理他们在上一个会话中上传的文件. 为了方便处理每个文件的数据和处理文件本身的内容,这是我正在考虑使用的URI方案: /sessions//会话/3/会话/3/文件/会话/3/文件/5/sessions/3/file/5/content/sessions/3/file/5/ ..
发布时间:2021-11-15 20:59:25 其他开发

网站 API 的黄金标准是什么?推特、Flickr、脸书等

今天的网站似乎有两类 API. 允许扩展网站功能的 API,如 Facebook、Myspace 等.这些 API 似乎非常多样化. 允许与 Twitter、Flickr 等现有网站功能交互的 API.这些都声称是基于 REST 的,但实际上只是“通过 HTTP 传输数据". 如果您要创建一个允许功能扩展和外部交互的网站,您会使用哪些现有 API 作为参考模型? 解决方案 ..
发布时间:2021-11-15 20:59:22 其他开发

为什么 Linux Open 系统调用不需要路径的缓冲区大小参数?

为什么 open 系统调用不需要像 write 系统调用那样的缓冲区大小参数? 这两个系统调用如何区别对待它们的字符串参数? open 系统调用是否假定 path 参数以零结尾的字符串而 write 系统调用没有?如果是这样,为什么不一致? 为什么不让所有(或没有)使用字符串/数组的系统调用都需要大小参数? 解决方案 UNIX 被开发为一种操作系统,用于用汇编编写的程序, ..
发布时间:2021-11-15 20:59:19 服务器开发

为什么 DialogResult 在 WPF 中是一个可为空的布尔值?

对于对话的结果是 WPF 中可为空的布尔值这一事实,谁能想到一个很好的解释?这一直让我感到困惑.在 WinForms 中,它是一个枚举类型,这对我来说更有意义. 解决方案 在我看来,这样做是因为在大多数情况下,您不需要像 Retry 或 Ignore 这样的通用专用选项.> 如果您需要的不仅仅是确定/取消,您应该使用某种任务对话框,例如有书面答案.这样,您就不仅限于几十年前有人想到的少数 ..
发布时间:2021-11-15 20:59:13 C#/.NET

如果没有可用数据,http 返回码应该是什么

例如,我有一个 api 方法 /api/orders.getOrders 实际上总是存在的.如果此方法没有返回以下格式的数据,我应该发送 404 还是 200 http 响应代码? { "订单":[]} 解决方案 200 是正确的. 来自 RFC 7231 状态代码的 4xx(客户端错误)类表示客户端似乎出错了. 404(未找到)状态码表示源服务器没有找到目标资源的 ..
发布时间:2021-11-15 20:59:01 其他开发

可可缺少什么?

如果您可以在 Cocoa 中添加任何东西,您会添加什么?您会说 Cocoa 中缺少任何主要或次要功能吗?也许由于框架中的遗漏,您不得不一遍又一遍地发明一个轮子? 解决方案 内置正则表达式支持(a la RegexKit)将 方便.NSRegularExpression 在 iOS 4.0+ 上可用,但在 Mac OS X 上仍然不可用. 一种从大型文本文件中逐步读取 NSStri ..
发布时间:2021-11-15 20:58:58 移动开发

C#泛型:如果 T 是返回类型,它也可以是 void 吗?如何将这些接口组合在一起?

我有以下接口使用回调返回 T 类型的泛型参数... 公共接口IDoWork;{T DoWork();} 但是我也有以下接口,但它不会调用回调,因为它返回 void. 公共接口IDoWork{void DoWork();} 我可以将这两个接口结合起来,并使用运行时逻辑来确定差异吗?我该怎么做? 解决方案 很遗憾,它们不能合并. 您可以在框架中看到这一点 - 这就是为什么有一个单 ..
发布时间:2021-11-15 20:58:55 C#/.NET

从 Laravel Jobs 返回数据

我正在 Laravel 上为移动应用开发 API. 方法将向其他 API 发出请求、组合和过滤数据、改变其结构等. 应用的要求之一是响应时间不超过 30 秒,或者根本不响应.所以,我必须尽可能多地重复请求.我试图通过 Laravel 队列实现这一点,并且目前在我的作业类中有类似的东西: private $apiActionName;公共函数 __construct($apiActio ..
发布时间:2021-11-15 20:58:48 PHP

“空"有简洁的反义词吗?

字符串类的接口通常具有名为 IsEmpty 的方法(VCL) 或 empty (STL).这是绝对合理的,因为它是一种特殊情况,但是使用这些方法的代码通常必须否定这个谓词,这会导致“光学"(甚至心理上的)开销"(感叹号不是很明显,尤其是在一个左括号之后).例如,请参阅此(简化)代码: ////格式化输出的可选时间规范std::string fmtTime(const std::string& s ..
发布时间:2021-11-15 20:58:46 C/C++开发

健康检查是否应该调用其他应用健康检查

我有两个由我控制的 API 的 A 和 B,并且都进行了就绪和活跃状况检查.A 依赖 B. A/foo - 此端点调用 B 中的/bar/状态/直播/状态/准备好乙/酒吧/状态/直播/状态/准备好 由于依赖关系,A 的就绪状态检查是否应该调用 API B 的就绪状态检查? 解决方案 如果服务 A 可以处理业务请求,它就准备好了.因此,如果能够到达 B 是它需要做的事情的一部分(看起来确 ..

改造 void 方法以返回其参数以促进流畅性:打破变化?

“API 设计就像性爱:犯一个错误并支持你的余生" (Josh Bloch 在 twitter 上) Java 库中有很多设计错误.Stack extends Vector(讨论),我们不能在不造成破损的情况下修复它.我们可以尝试弃用 Integer.getInteger (讨论),但它可能会永远存在. 尽管如此,某些类型的改造可以在不造成损坏的情况下进行. Effective ..
发布时间:2021-11-15 20:58:40 Java开发

私有类函数与未命名命名空间中的函数

我发现自己往往没有私有类函数.如果可能的话,所有候选私有类函数而不是我放入未命名的命名空间并将所有必要的信息作为函数参数传递.我没有一个合理的解释为什么我要这样做,但至少对我来说看起来更自然.因此,我需要在头文件中公开较少的内部细节. 您有什么看法 - 这是正确的做法吗? 解决方案 在我通常工作的半大型项目中(超过 200 万行代码),如果可以,我会禁止私有类函数.原因是私有类函数是 ..
发布时间:2021-11-15 20:58:36 C/C++开发

API 端点语义

API 端点是“方法",例如 https://api.foursquare.com/v2/venues/ 或包含非查询字符串参数的完整 URL,例如 https://api.foursquare.com/v2/venues/5104 换句话说,这两个独立的端点是相同的端点还是被视为同一个端点?http://myapi.com/somemodel/1 http://myapi.com/som ..
发布时间:2021-11-15 20:58:29 其他开发

我什么时候定义objective-c方法?

我正在学习 Objective-C,并且有 C/C++ 背景. 在面向对象的 C++ 中,您总是需要在定义(实现)方法之前声明它,即使它是在父类中声明的. 在程序风格的 C、IIRC 中,你可以只定义一个函数,只要它只是从稍后出现的同一编译单元(即同一文件)中的其他东西调用文件(好吧,前提是你没有在别处用“extern"声明它). 现在,在 Objective-C 中,如果选择器 ..
发布时间:2021-11-15 20:58:26 移动开发