Tag: api devise

RESTfuldevise:何时使用子资源?

在devise资源层次时,应该何时使用子资源? 我曾经相信,当一个资源不可能没有另一个时,它应该被表示为它的子资源。 我最近碰到这个反例: 员工在所有公司中都是唯一可识别的。 员工的访问控制和生命周期取决于公司。 我将其build模为: /companies/{companyName}/employee/{employeeId} 请注意,我不需要查找公司来find员工,那么我该怎么办? 如果我这样做,我付出代价来查找我不需要的信息。 如果我没有,这个URL错误地返回HTTP 200: /companies/{nonExistingName}/employee/{existingId} 我应该如何表示一个资源属于另一个资源的事实? 我应该如何expression这样一个事实:一个资源如果没有另一个资源就不能被识别 ? 子资源意味着什么关系,而不是意味着build模?

你如何定义好的或坏的API?

背景: 我正在我的大学上课,名为“软件约束”。 在第一次讲座中,我们正在学习如何build立良好的API。 一个很好的例子,我们得到了一个非常糟糕的API函数是public static void Select(IList checkRead, IList checkWrite, IList checkError, int microseconds); 在C#中。 该函数接收3个套接字列表,并销毁它们,使得用户在将它们送入Select()之前必须克隆所有套接字。 它也有一个超时(微秒),它是一个int,它设置服务器可以等待套接字的最长时间。 这个限制是+/- 35分钟(因为它是一个整数)。 问题: 你如何定义一个API为“坏”? 你如何定义一个API为“好”? 要考虑的要点: function名称很难记住。 function参数很难理解。 糟糕的文档。 一切都是如此相互联系,如果你需要改变1行代码,你实际上需要改变其他地方的数百行。 破坏他们论点的function。 由于“隐藏”的复杂性,可扩展性差。 用户/ dev需要在API上构build包装器,以便可以使用它。

deviseAPI的最佳实践和指南

在deviseAPI时,我可以坚持哪些准则和最佳实践? 至less,我知道一个API应该易于使用和灵活。 不幸的是,这些术语可能相当主观,所以我正在寻找一些关于良好APIdevise的具体指导方针。

API分页最佳实践

我想用我正在构build的分页API来处理一个奇怪的边界情况。 像许多API一样,这个分页大的结果。 如果你查询/ foos,你会得到100个结果(即foo#1-100),并且到/ foos?page = 2的链接应该返回foo#101-200。 不幸的是,如果在API消费者进行下一个查询之前从数据集中删除foo#10,那么/ foos?page = 2将偏移100,并返回foos#102-201。 对于试图拉动所有foos的API消费者来说,这是一个问题 – 他们不会收到foo#101。 处理这个问题的最佳做法是什么? 我们希望尽可能轻量化(即避免处理API请求的会话)。 其他API的例子将不胜感激!