CreateDocumentQuery(),其属性不是id

问题描述 投票:0回答:1

我试图使用DocumentDB中的id以外的属性查询文档。我找到了一个解决方案here,但我不确定在进行查询时URL应该是什么。例如,在这个场景中:

var families = from f in client.CreateDocumentQuery<Family>(colSelfLink)
       where f.Address.City != "NY"
       select f;

如果是getFamilyById,则可能是http://localhost:50912/api/family/xxxxxx,其中xxxxx = family id

如果if是getFamilyByCity,则不能再使用此格式:http://localhost:50912/api/family/xxxxxx其中xxxxx =城市名称。因为API会对您是选择家庭ID还是城市名称感到困惑。所以我认为我们应该使用像http://localhost:50912/api/family/byCity/xxxx这样的URL,其中xxxx =城市名称。

但我想知道我们怎样才能做到这一点?

这是我的示例代码:

namespace Family.Controllers
{
    [Produces("application/json")]
    [Route("api/Family")]
    public class FamilyController : Controller
    {
        [HttpGet]
        public async Task<IEnumerable<Family>> GetAllAsync()
        {
            var families= await FamilyProfile.DocumentDBRepository<Family>.GetIndividualsAsync(t => t.PrimaryKey != null);
            return families;
        }

        [HttpGet("{id}")]
        public async Task<IActionResult> GetByIdAsync(string id)
        {
            var family= await DocumentDBRepository<Individual>.GetFamilyAsync(id);
            if (family== null)
            {
                return NotFound();
            }
            return new ObjectResult(family);
        }

        [HttpGet("{FamilyID}")]
        [Route("/ByCity")]
        public async Task<IActionResult> GetByCityAsync(string city)
        {
            var family= await DocumentDBRepository<Family>.GetFamilyAsyncByFamilyID(city); 

            if (family== null)
            {
                return NotFound();
            }
            return new ObjectResult(family);
        }
             }
    } 

当我运行http://localhost:50912/api/family/xxxxxx并且断点没有达到GetByCityAsync(字符串城市)时它返回404。我应该研究什么建议?谢谢!

linq rest api azure azure-cosmosdb
1个回答
1
投票

所以我认为我们应该使用像http://localhost:50912/api/family/byCity/xxxx这样的URL,其中xxxx =城市名称。

根据您的描述和代码,我建议您可以修改有关GetByCityAsync的路由。

更改

[Route("/ByCity")]

[Route("ByCity/{city}")]
© www.soinside.com 2019 - 2024. All rights reserved.