api-design相关内容
我讨厌使用不能让简单的事情变得简单的过度设计的 API.尽管如此,我正在为一个开源库设计一个 API,我开始觉得我陷入了过度设计的陷阱.我真的不能确定,因为,当然,我写了该死的东西,所以它的工作原理对我来说比其他任何人都更明显.从开发人员的角度来看,您的 API 可能被过度设计有哪些警告信号? 解决方案 "从开发人员的角度来看,您的 API 可能被过度设计有哪些警告信号?" 没有用例
..
我要为一个网络应用构建一个 API,我对人们可以推荐的良好做法很感兴趣. 我已经计划将其版本化(版本 1 只能控制系统的某些方面,版本 2 可以控制更多,但这可能需要更改与版本 1 不兼容的身份验证方式),并且身份验证将与人们用于登录的标准用户名/密码不同(如果有人确实使用了恶意工具,它不会将其打开以完全模拟,只要 api 允许). 有没有人有进一步的想法,或者您使用过的具有特别好的
..
我想为文件上传服务创建一个 REST API,允许用户: 打开会话 上传一堆文件 关闭会话 然后,回来处理他们在上一个会话中上传的文件. 为了方便处理每个文件的数据和处理文件本身的内容,这是我正在考虑使用的URI方案: /sessions//会话/3/会话/3/文件/会话/3/文件/5/sessions/3/file/5/content/sessions/3/file/5/
..
今天的网站似乎有两类 API. 允许扩展网站功能的 API,如 Facebook、Myspace 等.这些 API 似乎非常多样化. 允许与 Twitter、Flickr 等现有网站功能交互的 API.这些都声称是基于 REST 的,但实际上只是“通过 HTTP 传输数据". 如果您要创建一个允许功能扩展和外部交互的网站,您会使用哪些现有 API 作为参考模型? 解决方案
..
为什么 open 系统调用不需要像 write 系统调用那样的缓冲区大小参数? 这两个系统调用如何区别对待它们的字符串参数? open 系统调用是否假定 path 参数以零结尾的字符串而 write 系统调用没有?如果是这样,为什么不一致? 为什么不让所有(或没有)使用字符串/数组的系统调用都需要大小参数? 解决方案 UNIX 被开发为一种操作系统,用于用汇编编写的程序,
..
现有的 C API 如下所示: //数据typedef struct {int 属性;} 小部件;//界面Widget* SetWidth(Widget *const w, int width){//...返回 w;}Widget* SetHeight(Widget *const w, int height){//...返回 w;}Widget* SetTitle(Widget *const w
..
对于对话的结果是 WPF 中可为空的布尔值这一事实,谁能想到一个很好的解释?这一直让我感到困惑.在 WinForms 中,它是一个枚举类型,这对我来说更有意义. 解决方案 在我看来,这样做是因为在大多数情况下,您不需要像 Retry 或 Ignore 这样的通用专用选项.> 如果您需要的不仅仅是确定/取消,您应该使用某种任务对话框,例如有书面答案.这样,您就不仅限于几十年前有人想到的少数
..
我最近发现可以"通过使用
..
有没有什么地方可以获得更多关于如何创建使用 Git 扩展 API 的扩展的文档? 在 https://github.com/microsoft/vscode/blob/master/extensions/git/README.md 微软提供的唯一文档是: Visual Studio Code 的 Git 集成 注意:此扩展与 Visual Studio Code 捆绑在一起.可以
..
例如,我有一个 api 方法 /api/orders.getOrders 实际上总是存在的.如果此方法没有返回以下格式的数据,我应该发送 404 还是 200 http 响应代码? { "订单":[]} 解决方案 200 是正确的. 来自 RFC 7231 状态代码的 4xx(客户端错误)类表示客户端似乎出错了. 404(未找到)状态码表示源服务器没有找到目标资源的
..
如果您可以在 Cocoa 中添加任何东西,您会添加什么?您会说 Cocoa 中缺少任何主要或次要功能吗?也许由于框架中的遗漏,您不得不一遍又一遍地发明一个轮子? 解决方案 内置正则表达式支持(a la RegexKit)将 方便.NSRegularExpression 在 iOS 4.0+ 上可用,但在 Mac OS X 上仍然不可用. 一种从大型文本文件中逐步读取 NSStri
..
我有以下接口使用回调返回 T 类型的泛型参数... 公共接口IDoWork;{T DoWork();} 但是我也有以下接口,但它不会调用回调,因为它返回 void. 公共接口IDoWork{void DoWork();} 我可以将这两个接口结合起来,并使用运行时逻辑来确定差异吗?我该怎么做? 解决方案 很遗憾,它们不能合并. 您可以在框架中看到这一点 - 这就是为什么有一个单
..
迭代 为 getLast 提供两种方法 public static T getLast(Iterableiterable);公共静态T getLast(Iterable iterable, @Nullable T defaultValue); 但只有一个用于 getFirst public static T getFirst(Iterable iterable, @Nullabl
..
我正在 Laravel 上为移动应用开发 API. 方法将向其他 API 发出请求、组合和过滤数据、改变其结构等. 应用的要求之一是响应时间不超过 30 秒,或者根本不响应.所以,我必须尽可能多地重复请求.我试图通过 Laravel 队列实现这一点,并且目前在我的作业类中有类似的东西: private $apiActionName;公共函数 __construct($apiActio
..
字符串类的接口通常具有名为 IsEmpty 的方法(VCL) 或 empty (STL).这是绝对合理的,因为它是一种特殊情况,但是使用这些方法的代码通常必须否定这个谓词,这会导致“光学"(甚至心理上的)开销"(感叹号不是很明显,尤其是在一个左括号之后).例如,请参阅此(简化)代码: ////格式化输出的可选时间规范std::string fmtTime(const std::string& s
..
我有两个由我控制的 API 的 A 和 B,并且都进行了就绪和活跃状况检查.A 依赖 B. A/foo - 此端点调用 B 中的/bar/状态/直播/状态/准备好乙/酒吧/状态/直播/状态/准备好 由于依赖关系,A 的就绪状态检查是否应该调用 API B 的就绪状态检查? 解决方案 如果服务 A 可以处理业务请求,它就准备好了.因此,如果能够到达 B 是它需要做的事情的一部分(看起来确
..
“API 设计就像性爱:犯一个错误并支持你的余生" (Josh Bloch 在 twitter 上) Java 库中有很多设计错误.Stack extends Vector(讨论),我们不能在不造成破损的情况下修复它.我们可以尝试弃用 Integer.getInteger (讨论),但它可能会永远存在. 尽管如此,某些类型的改造可以在不造成损坏的情况下进行. Effective
..
我发现自己往往没有私有类函数.如果可能的话,所有候选私有类函数而不是我放入未命名的命名空间并将所有必要的信息作为函数参数传递.我没有一个合理的解释为什么我要这样做,但至少对我来说看起来更自然.因此,我需要在头文件中公开较少的内部细节. 您有什么看法 - 这是正确的做法吗? 解决方案 在我通常工作的半大型项目中(超过 200 万行代码),如果可以,我会禁止私有类函数.原因是私有类函数是
..
API 端点是“方法",例如 https://api.foursquare.com/v2/venues/ 或包含非查询字符串参数的完整 URL,例如 https://api.foursquare.com/v2/venues/5104 换句话说,这两个独立的端点是相同的端点还是被视为同一个端点?http://myapi.com/somemodel/1 http://myapi.com/som
..
我正在学习 Objective-C,并且有 C/C++ 背景. 在面向对象的 C++ 中,您总是需要在定义(实现)方法之前声明它,即使它是在父类中声明的. 在程序风格的 C、IIRC 中,你可以只定义一个函数,只要它只是从稍后出现的同一编译单元(即同一文件)中的其他东西调用文件(好吧,前提是你没有在别处用“extern"声明它). 现在,在 Objective-C 中,如果选择器
..