我们正在考虑如何为其他系统设计接口。接口设计/ API设计:通用方法与特定方法
我的同事希望实现一个通用接口(例如doIt(JSONArray)),您可以在JSONObject中放置想要的信息,以便呼叫例如是这样的: doIt('{"method":"getInformation", "id":"1234", "detailLevel": "2"}')
doIt('{"method":"getEmployeeInfo", "EmployeeId":"4567", "company": "Acme Inc."}')
(我用“和‘在这个例子只是为了演示的目的,我知道我不得不逃离。’在实际系统中)。 这种方法则是通过HTTP accessable,这样我想http://mysite/doIt?parm={JSONObject}
我的方法是使用不同的接口与它们各自的参数,这样,我想有一个getInformation(1234,2)
和getEmployeeInfo(4567,"Acme Inc.")
接口。因此,通过http访问我的计划如下所示:http://mysite/getInformation?id=1234&detailLevel=2
和http://mysite/getEmployeeInfo?employeeId=4567&company=acmeinc.
对于访问我们服务的客户,我们希望提供封装bevahiour的特殊库。例如。会有一个客户机Java-lib的这转化一个客户调用getEmployeeInfo(..)要么
http://mysite/doIt?parm={'{"method":"getEmployeeInfo", "EmployeeId":"4567", "company": "Acme Inc."}'}
或
http://mysite/getEmployeeInfo?employeeId=4567&company=acmeinc.
,然后返回结果。
因此,对于客户端来说,如果后端使用处理“翻译”的库,后端将如何工作。
您认为每个想法的优缺点是什么?我更喜欢我的方法,因为它看起来更“干净”。但这只是一种难以争辩的感觉。也许你可以给我(或他)关于设计的一些想法,也可以触摸区域(可伸缩性,安全性...)或提供有关此事宜的有用链接
,因为它的工作原理,它是面向未来的老板只要不关心;) – codie4711 2011-05-06 10:18:12