REST API-命名端点的逻辑方法

时间:2018-08-07 09:55:40

标签: rest api-design

我想遵循最佳实践来实现REST API。我想公开一种资源,我可以想到将其用作端点的两种方法。

我想让用户有机会获得某个广告系列的所有付款。

我可以公开/campaigns/{id}/payment,它返回分页的付款清单,其中包含每个付款人的所有数据(姓名,地址,日期...)。 /campaign/{id}依次返回广告系列的所有数据(名称,说明...,paymentId的数组,以及逐一获取它们的路线)。

或者我可以公开/payments/campaigns/{campaignsId}

什么是最好的方法,为什么?

2 个答案:

答案 0 :(得分:1)

假设REST关心URI的拼写是一个误解

但是,我建议您在URI中为您的API采用一致​​的命名约定。 一种通用方法是对URI使用使用复数名词来引用集合并组织URI以表示层次结构。

因此,对于您在问题中描述的情况,可以使用/campaigns/{id}/payments来标识您的资源。它标识特定广告系列的付款集合。

答案 1 :(得分:1)

我之所以使用<!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js " integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo " crossorigin="anonymous "></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js " integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49 " crossorigin="anonymous "></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js " integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em " crossorigin="anonymous "></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.min.js" type="text/javascript"></script> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous"> <!--Font Awesome (added because you use icons in your prepend/append)--> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <body> <div class="col-sm-4 input-group"> <div class="input-group-prepend"> <div class="input-group-text"> <i class="fa fa-search"></i> </div> </div> <input type="text" class="form-control"> </div> </body>,是因为它传达了客户端在使用/campaigns/{id}/payments查询此URL时客户端可以期望的响应内容,这是最常见的做法。

GET

读起来很像“用GET /camapaigns/{id}/payments 给我所有的广告费用”。因此,这遵循最小惊讶原则。而且,客户端然后可以准确地获取所请求的内容。

如果您想了解更多有关RESTful API的信息,请使用API design guide