我在";设计优步api模拟面试"。
对于大多数API;userId";并留在系统上以解决";rideId";
Example - cancelRide(userId: string)
对于这个api,用户只是将userId传递给cancelRide端点,现在系统必须解析rideId才能真正取消骑行。
现在,这可能会解决手头的问题,但未来优步可能希望为单个用户提供多次乘车服务(你也可以同时为自己和妈妈预订乘车服务(
现在有了这种API设计,我们将不得不对cancelRide端点进行更改,以接受rideId和
cancelRide(userId: string, rideId: string)
如果有新的需求,我们是否应该根据当前的问题进行设计,并对API/设计进行更改,或者我们至少应该考虑一些明显/可能的未来需求/更改?
您应该提前思考:他们未来需要什么样的潜在需求/更改?
原因是您正在开发API
。
假设您的API有超过10万个外部客户端,任何更改都将强制它们更新、修改、重建其APP和大量工作。
因此,YAGNI原则不适用于API设计问题。你应该试试开闭原理(OCP(。