C# 什么是正确的API端点?
我正在编写这样的API端点,但这里有一个模糊的东西。 这些端点正在处理具有CompanyId和KeywordId的CompanyKeyword表。因此,该表与公司和关键字表相关 我将获得所有的公司关键字和特定的公司关键字与以下端点,分别 当我在网上看的时候。指引说 如果关系只能存在于其他资源中,请使用 据它说 这将引导我了解以下端点:C# 什么是正确的API端点?,c#,rest,api,.net-core,asp.net-core-webapi,C#,Rest,Api,.net Core,Asp.net Core Webapi,我正在编写这样的API端点,但这里有一个模糊的东西。 这些端点正在处理具有CompanyId和KeywordId的CompanyKeyword表。因此,该表与公司和关键字表相关 我将获得所有的公司关键字和特定的公司关键字与以下端点,分别 当我在网上看的时候。指引说 如果关系只能存在于其他资源中,请使用 据它说 这将引导我了解以下端点: [HttpGet("api/company/{companyId}/keyword/{keywordId}")] [HttpGet("api/company/{c
[HttpGet("api/company/{companyId}/keyword/{keywordId}")]
[HttpGet("api/company/{companyId}/keyword")]
但是我没有在我的后端代码中使用companyId和keywordId。我只需要公司的密码
因此,我使用的端点如下所示
(1)
[HttpGet]
public async Task<IActionResult> GetAllAsync()
{
// Some Code
}
[HttpGet("{id}")]
public async Task<IActionResult> GetByIdAsync(Guid id)
{
// Some Code
}
我很困惑。哪一个是正确的,1还是2
你能帮我一下吗?这是一个一致性和清晰性的问题。通过查看请求:
api/company/{companyId}/keyword
api/company/{companyId}/keyword/{keywordId}
我知道我正在获取companyId
的关键字列表,或者companyId
的特定关键字keywordId
。这是一个清晰的api请求,因为我可以通过查看url来确定得到的结果
现在如果url会改变,因为我不需要后端的companyId
api/keyword/{keywordId}
然后从URL我再也不能确定这个关键字属于哪里了。事实上,它甚至不清楚你是否真的需要它来属于一家公司
如果该资源属于不同的资源,那么为了清晰起见,将其写入url,即使您实际上不需要关联的id
已经说过了;即使不需要,为什么不使用公司ID
?作为API的用户,我可能认为关键字342属于589公司,但如果不是呢?urlapi/keyword/342
仍将返回它,因为select语句中没有包含公司id。因此,请使用url中的任何标识符来拨打电话,即使它看起来没有意义
select * from keywords where companyId = 589 and keywordId = 342;
这是一个一致性和清晰性的问题。通过查看请求:
api/company/{companyId}/keyword
api/company/{companyId}/keyword/{keywordId}
我知道我正在获取companyId
的关键字列表,或者companyId
的特定关键字keywordId
。这是一个清晰的api请求,因为我可以通过查看url来确定得到的结果
现在如果url会改变,因为我不需要后端的companyId
api/keyword/{keywordId}
然后从URL我再也不能确定这个关键字属于哪里了。事实上,它甚至不清楚你是否真的需要它来属于一家公司
如果该资源属于不同的资源,那么为了清晰起见,将其写入url,即使您实际上不需要关联的id
已经说过了;即使不需要,为什么不使用公司ID
?作为API的用户,我可能认为关键字342属于589公司,但如果不是呢?urlapi/keyword/342
仍将返回它,因为select语句中没有包含公司id。因此,请使用url中的任何标识符来拨打电话,即使它看起来没有意义
select * from keywords where companyId = 589 and keywordId = 342;