如何以RESTFul方式设计计算API?
我正试图设计一个API来根据输入计算结果 真实业务: API比较两个证券投资组合(源和目标)并返回订单,消费者获得订单,因此他/她可以下这些订单以调整源到目标的投资组合 如果这很难理解,那么这里有一个类似的场景: API比较两个文本,然后返回两个文本的差异 它与经典的CRUD稍有不同,因为输入和输出是不同的资源 我的第一个想法是:如何以RESTFul方式设计计算API?,rest,Rest,我正试图设计一个API来根据输入计算结果 真实业务: API比较两个证券投资组合(源和目标)并返回订单,消费者获得订单,因此他/她可以下这些订单以调整源到目标的投资组合 如果这很难理解,那么这里有一个类似的场景: API比较两个文本,然后返回两个文本的差异 它与经典的CRUD稍有不同,因为输入和输出是不同的资源 我的第一个想法是: POST /api/difference { 'source': { ... }, 'target': { ... } } 但是,它将与经典有效载荷
POST /api/difference
{
'source': { ... },
'target': { ... }
}
但是,它将与经典有效载荷相冲突:
POST /api/difference
{
'lineNumber': ...,
'isAdded': ...
}
问题:
我不确定我是否正确地理解了你的问题,但总的来说,它是正确的 取决于资源是否已在系统中持久化。万一 这两种资源在系统中都已可用,我只需构建一个URI 类似于
/portfolio/{source\u id}/difference/{target\u id}
,它返回diff
结果。如果只有源代码存在,我可能会使用如下内容:
POST /portfolio/{source_id}/difference
{target}
如果两种资源都不可用,我可能会考虑首先坚持。
我不确定我是否正确地理解了你的问题,但总的来说,它是正确的 取决于资源是否已在系统中持久化。万一 这两种资源在系统中都已可用,我只需构建一个URI 类似于
/portfolio/{source\u id}/difference/{target\u id}
,它返回diff
结果。如果只有源代码存在,我可能会使用如下内容:
POST /portfolio/{source_id}/difference
{target}
如果两种资源都不可用,我可能会考虑首先坚持。
这样的资源,然后进行比较。如果我理解正确,已经存在资源
POST/api/difference
,因此您希望更改MIME类型。相反,为什么不使用第一种方法并更改资源名称?比如说,
POST /api/compare
{
'source': { ... },
'target': { ... }
}
如果我理解正确,那么已经存在资源
POST/api/difference
,因此您希望更改MIME类型。相反,为什么不使用第一种方法并更改资源名称?比如说,
POST /api/compare
{
'source': { ... },
'target': { ... }
}
源组合是用户帐户的当前组合。目标投资组合可能具有不同的总价值,但在比较和生成订单之前将调整为相同的总价值。源投资组合是用户帐户的当前投资组合。目标投资组合可能具有不同的总价值,但在比较和生成订单之前将调整为相同的总价值。