用户可以被分配到作业,这由memberJobAllocation表示。我想创建一个api端点来获取针对一个作业的所有memberJobAllocations;我想使用url"Job/{id}/memberJobAllocations"。这看起来像是一个奇怪的api端点,因为第一部分("Job/"(已经指示分配是针对作业的。
url可能只是"Job/{id}/memberAllocations"吗?这可能读起来更好,但如果我想创建另一个端点来获得memberJobAllocation,它必须是"memberJobAllocation/{id}",因为"memberAllocation/{id}"没有太多说明。在我的API中,memberJobAllocation资源可以有两个不同的名称吗?
哪种方法会更好?rest是否强制资源的名称应该完全匹配,或者是否有一些灵活性?
rest是否强制资源的名称应该完全匹配,或者是否有一些灵活性?
REST只坚持标识符符合RFC 3986所描述的生产规则。
为了便于人类消费者理解,您需要使用与";外观和感觉;API的其他部分,但机器不在乎。
因此:
我想使用url"Job/{id}/memberJobAllocations"。
是的,没关系。
url可能只是"Job/{id}/memberAllocations"吗?
也可以。
在我的API中,memberJobAllocation资源可以有两个不同的名称吗?
没有,但有点。就REST而言,如果您有两个不同的资源标识符,那么您就有两种不同的资源(文档(。但是,两个不同的文档呈现相同的信息(即,从相同的底层源构建(是完全可以的。
就客户端(以及更广泛地说,所有通用组件(而言,这两个文档是完全独立的——使其中一个文档无效对另一个文档的缓存表示没有影响。如果单个客户端可能从两个不同的资源中检索相同的信息,那么您需要考虑如果这两个资源中的信息是";不同步";。