当前位置: 首页 > 知识库问答 >
问题:

如何符合REST url模式而不是方法名

林鹭洋
2023-03-14

OrdersController:
-getOrders
-GetordersforCustomer(int CustomerId)
-GetOrderWithCustomerInfo(int CustomerId)

CustomerController
-GetCustomer(int id)
-getCustomerWithinZipCode

因此,使用像这样的API控制器方法并不遵循其他地方看到的其他“准则”,对吗?如果不是,我如何重组我的控制器以适应标准HTTP方法名称,特别是当存在相关实体时?

GET /tickets/12/messages - Retrieves list of messages for ticket #12
GET /tickets/12/messages/5 - Retrieves message #5 for ticket #12
POST /tickets/12/messages - Creates a new message in ticket #12
PUT /tickets/12/messages/5 - Updates message #5 for ticket #12
PATCH /tickets/12/messages/5 - Partially updates message #5 for ticket #12
DELETE /tickets/12/messages/5 - Deletes message #5 for ticket #12

共有1个答案

顾高扬
2023-03-14

问题是广泛的,也是基于意见的。

也就是说,没有必要重组控制器。

使用属性路由的研究。

[Route([controller])]
OrdersController:
    //Matches GET orders
    [HttpGet]
    GetOrders()

    //Matches GET customers/1234/orders
    [HttpGet(~/customers/{customerId:int}/orders)]
    GetOrdersForCustomer(int customerId)

    Matches GET orders/1324/customer/5678
    [HttpGet({orderId:int}/customer/{customerId:int})]
    GetOrderWithCustomerInfo(int orderId, int customerId)

[Route([controller])]
CustomersController
    //Matches GET customers
    [HttpGet]
    GetCustomers()

    //Matches GET customers/1234
    [HttpGet("{id:int}")]
    GetCustomer(int id)

    //Matches GET zipcodes/90210/customers
    [HttpGet("~/zipcodes/{zipCode:int}/customers")]
    GetCustomerWithinZipcode(int zipCode)
 类似资料:
  • 问题内容: 无论Object.assign和对象传播只能做一浅合并。 问题的一个示例: 输出是您期望的。但是,如果我尝试这样做: 代替 你得到 x完全被覆盖,因为传播语法仅深入了一层。与相同。 有没有办法做到这一点? 问题答案: 有人知道ES6 / ES7规范中是否存在深度合并? 不,不是的。

  • Object.assign和Object spread仅进行浅合并。 问题的一个例子: 输出是您所期望的。但是,如果我尝试以下方法: 而不是 你得到 X被完全覆盖,因为扩展语法只深入一层。这与相同。 有办法做到这一点吗?

  • 我必须向客户提供上传他自己的JSON模式的可能性。 是否有方法验证用户提供的JSON模式是有效的JSON模式,而不仅仅是数据? 我在这个库中使用Javahttps://github.com/networknt/json-schema-validator 更新: 我有以下模式: 我需要知道这是否是一个有效的JSON模式,而不是JSON数据。此处提供了一个JSON数据示例:

  • 我目前正在迭代一个数组,其中每个索引包含两个节点和一个关系(第1部分)- 我读了这篇文章,但我不明白如何实现它,使两个相同的节点具有相同的ID。我现在的代码是这样的: 创建两个节点 创造他们的关系 将关系添加到节点 坚持使用Neo4jTemplate.save() 我需要更改什么以合并而不是创建?我是否需要在持久化之前进行检查,或者在持久化SDN 4时是否有方法进行检查? 编辑: 我决定使用Neo

  • 我有一个服务类叫“主机服务” 现在我想使用Mockito编写一个单元测试用例'HostServiceTest'。我将创建一个主机服务和模拟平台服务的实例,并监视这个主机服务实例来模拟isReachable方法。 在测试用例中,它不是调用isReachable的模拟方法,而是进入实际的方法。 我看到了这个问题:试图窥探方法是调用原始方法,我确实遵循了他们建议的方法,但它调用的是实际的方法。o 这可能

  • GOF讨论了“工厂方法”模式的框架。框架需要对象,但对象的实现取决于应用程序,因此创建了创建对象的抽象方法。此外,由于需要返回类型,因此定义了所需对象的接口,它定义了对象所需的API。实际对象由子类创建(具体应用程序)。这是一种创造性的模式。 对于模板模式,唯一的变化是封装类不知道某些行为的实现,因此它将其抽象到方法中,使用它,但将实现留给子类。这是行为模式。 两者之间唯一的区别是 示例代码 现在