Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在为应用程序生成RESTURL时,我们应该如何区分与同一对象相关的两个服务?_Java_Rest_Url_Naming Conventions - Fatal编程技术网

Java 在为应用程序生成RESTURL时,我们应该如何区分与同一对象相关的两个服务?

Java 在为应用程序生成RESTURL时,我们应该如何区分与同一对象相关的两个服务?,java,rest,url,naming-conventions,Java,Rest,Url,Naming Conventions,需要两个与对象“item”相关的服务 以获取项目的详细信息。虽然这是一种获取数据的方法,但我将使用POST,因为我的pathParam/MatrixParam列表太长(例如,MatrixParam中提供的PurchaseRID用于获取他们购买的物品)。为了避免“URI太长”异常,我将其发布 以保存包含某些详细信息的项目。这也是一种POST方法,因为它正在保存/更新 现在,两个服务都将具有相同的url,并且都将httpMethod作为POST 我们如何通过URL区分这两个服务?将其设置为“”和“.

需要两个与对象“item”相关的服务

  • 以获取项目的详细信息。虽然这是一种获取数据的方法,但我将使用POST,因为我的pathParam/MatrixParam列表太长(例如,MatrixParam中提供的PurchaseRID用于获取他们购买的物品)。为了避免“URI太长”异常,我将其发布

  • 以保存包含某些详细信息的项目。这也是一种POST方法,因为它正在保存/更新

  • 现在,两个服务都将具有相同的url,并且都将httpMethod作为POST


    我们如何通过URL区分这两个服务?将其设置为“”和“../item/get”是否正确?

    如果您的URL最终太长,听起来您的URL设计是错误的-针对
    http://.../items/1/purchasers/
    (例如)是一个不错的URL,返回所有购买了项目1的人,然后更新项目1,您可以将其置于
    http://.../items/1/
    并创建一个项目,您将发布到
    http://.../items/


    您决定的URL方案听起来不是RESTful的,因为您使用它来描述操作而不是资源-URL应该标识您正在访问的资源,而不是对其执行什么操作。

    要获取项目的详细信息,您需要使用get方法,将项目id作为路径参数


    将POST用于GET将无法达到目的,api的整个设计将受到干扰。

    通常您不会使用POST来获取数据。也许您可以在
    GET/item
    url中包含一个示例,说明您希望添加哪些参数/数据。我需要在url中传递PurchaseRID,就像我现在在描述中添加的那样。问题是,有时PurchaseRID太多,以至于超出了url的最大长度。因此,我在requestBody中传递purchaserid,并使其成为posit,这与您如何表达它无关,如果您希望它成为一个REST接口,您不应该使用POST来获取,而应该只使用get。你能解释一下传递如此大量的采购的实际用例是什么吗?这可能有助于我们了解您正在尝试做什么,并提出更好的实现方法。谢谢。我已经添加了上面的评论,以及保留它作为帖子的原因。请查收,谢谢。我已经添加了上面的评论,以及保留它作为帖子的原因。请查收。第一个服务不是获取购买者,而是基于购买者ID获取物品。很抱歉造成混淆,我已对问题进行了编辑以使其更清楚。