31得票9回答
如何避免客户端和服务器之间重复的业务逻辑?

随着Web应用程序需求的增长,我发现自己编写更多基于API的Web应用程序。我使用像AngularJS这样的框架构建与这些API进行通信的丰富Web客户端。目前,我在服务器端/API方面使用PHP(Lumen或Laravel)。 问题是,我经常发现自己在客户端和服务器端之间重复业务逻辑。 ...

29得票4回答
RESTful API路由设计:嵌套与非嵌套的区别

我的问题是在构建API URL时,嵌套资源的优势。考虑以下两种访问员工资源的替代方案:/api/employees?department=1 # flat Vs. /api/departments/1/employees # nested 现在考虑开发一个通用库,用于访问 API 中...

27得票7回答
DSL / 流畅接口的用途是什么?

我最近观看了一场关于如何创建流畅的DSL的网络直播,我必须承认,我不理解为什么会使用这种方法(至少对于给定的示例而言)。 这个网络直播介绍了一个图像调整类,它允许您使用以下语法(使用C#)指定输入图像、调整大小并将其保存到输出文件中:Sizer sizer = new Sizer(); si...

25得票2回答
C#泛型:如果T是一个返回类型,它能否也是void?我如何将这些接口组合在一起?

我有一个接口,使用回调函数返回T类型的泛型参数... public interface IDoWork<T> { T DoWork(); } 然而,我还有以下界面,但它不会调用回调函数,因为它返回void。 public interface IDoWork { ...

24得票1回答
std::set为什么没有front和back成员函数,这是否是出于设计原因?

我知道可以使用*s.begin(),但同样的参数也适用于vector,它有front/back。 我经常使用set/map的有序属性来获取“最小”的元素/键 - 当然,我这样做不是有这个特性的原因,只是一个例子 :) 在这里,我谈论的是关于front/back为什么会是不好的设计的设计原...

24得票3回答
API请求中的访问令牌与用户名/密码

我知道这可能看起来像一个琐碎的问题,但我找不到答案,至少能让我心安。 如果一个移动应用正在与服务器通信,通常他们会登录并获得一个访问令牌,可以在整个会话中用于任何未来请求。 为什么不直接通过每个请求的HTTPS传递用户名和密码,而不是使用访问令牌。访问令牌需要与数据库进行验证,用户名/密码的组...

23得票1回答
如何根据Swift API设计指南调整协议/实现对?

在新的 Swift API 设计指南 中,常用的协议后缀 Type 被取消了。虽然对于独立的协议很容易做到这一点(例如将 SequenceType 更改为 Sequence),但我不知道如何更新协议为实现提供基础的 API。以下是一些流行框架的示例: Result µframework 提...

23得票14回答
有没有一个简洁的与“空”的相反的词?

通常字符串类的接口会有一个名为IsEmpty(VCL)或者empty(STL)的方法。这是很合理的特例,但使用这些方法的代码经常需要否定这个谓词,从而导致"视觉(甚至心理上的)负担"(感叹号在开括号后面不太明显)。例如,看看这个(简化的)代码:/// format an optional ti...

22得票5回答
我应该如何构建一个良好的(Web)API

我将为一个Web应用程序构建API,对于良好的实践方法,我很感兴趣。 我已经计划使其分版本(版本1只能控制系统的某些方面,版本2可以控制更多,但这可能需要改变身份验证方式,与版本1不兼容),并且身份验证将与人们用于登录的标准用户名/密码不同(如果有人使用恶意工具,它不会让他们完全冒充用户,而...

22得票4回答
一个RESTful服务应该如何在可变资源上公开只读属性?

我正在设计一个服务的资源,它有一组可变属性和一组不可变属性(例如,status是由服务生成的,客户端无法更改)。 我需要在响应 GET 请求时包含它,但如果有人使用 PUT 请求发送资源,我不确定该怎么办。 强制调用者知道哪些属性是不可变的感觉不对,但默默地丢弃更新也不正确。对 PUT 请...