Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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
C# 什么是正确的API端点?_C#_Rest_Api_.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 什么是正确的API端点?

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

我正在编写这样的API端点,但这里有一个模糊的东西。 这些端点正在处理具有CompanyId和KeywordId的CompanyKeyword表。因此,该表与公司和关键字表相关

我将获得所有的公司关键字和特定的公司关键字与以下端点,分别

当我在网上看的时候。指引说

如果关系只能存在于其他资源中,请使用 据它说

这将引导我了解以下端点:

[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公司,但如果不是呢?url
api/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公司,但如果不是呢?url
api/keyword/342
仍将返回它,因为select语句中没有包含公司id。因此,请使用url中的任何标识符来拨打电话,即使它看起来没有意义

select * from keywords where companyId = 589 and keywordId = 342;