C# - 在 API 调用上获取动态 URL 参数

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

我正在使用 C# 构建一个电影 API,其中用户调用我的端点,并根据传递的 id,我的服务器调用电影数据库 API 来获取一些详细信息。

例如:如果用户调用“/movie/id”端点,服务器会获取该 id 并将其传递给 movieDb.Get 方法。

我的主要问题是检索用户在访问我的端点时在 URL 中传递的 id

这就是我一直在尝试的:

var builder = WebApplication.CreateBuilder(args);

var app = builder.Build();

app.MapGet("/movie/{id}", (id) =>
{    
    object response = movieDb.Get($"/movie/{id}");
    return response;
});

还有我的班级:

public class MovieDB{
public async Task<object> Get(string uri){
            try{
                HttpClient client = new HttpClient();
                HttpResponseMessage response = await client.GetAsync($"{baseUrl}/{uri}? 
                                                                           {apiKey}");
                response.EnsureSuccessStatusCode();

                string responseBody = await response.Content.ReadAsStringAsync();
                return responseBody;
            }
            catch (Exception){
                throw;
            }
        }

}

当我访问“http://localhost:port/movie/616037”时,我希望看到电影数据库返回到这部电影,但我得到:

“连接被本地主机拒绝”。

如果我强迫并且喜欢

string id = "616037"

然后调用此方法在电影数据库 API 上发送正确的端点,然后返回该电影的详细信息 例如

movieDB.Get($"/movie/{id}")
c# .net parameter-passing dotnet-httpclient
1个回答
0
投票

您需要指定参数。因为不指定id就是HttpContext

您的代码必须如下所示

app.MapGet("/movie/{id}", (int id) =>{
...
}
© www.soinside.com 2019 - 2024. All rights reserved.