我正在为一个新闻聚合器Web应用程序创建一个原型,现在我正在为它创建后端,在那里它处理来自https://newsapi.org/个端点
在Swagger UI中,我收到了我定义的这个错误
调试器显示响应是400 Bad Request,当我获取用于该请求的确切URL并将其粘贴到我的浏览器/postman 中时,这完全是假的,这起作用了,实际上也让我的swagger API也起作用了:
这是await response.Content.ReadAsStringAsync()
的内容
"{\"status\":\"error\",\"code\":\"userAgentMissing\",\"message\":
\"Please set your User-Agent header to identify your application. Anonymous requests are not allowed.\"}"
突然我的Swagger用户界面开始工作,并返回相同的响应,我注意到这是持久的,这意味着停止和启动我的WebApi将保留对我使用的端点的"激活",但如果我将参数从us
更改为ua
,则不会
这就是我从NewSapi访问终端的方式
public async Task<NewsApiResponse> GetNewsAsync(string country, string category)
{
string url = $"https://newsapi.org/v2/top-headlines?country={country}&category={category}&apiKey={_apiKey}";
var response = await _httpClient.GetAsync(url);
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
var newsData = JsonConvert.DeserializeObject<NewsApiResponse>(content);
// Check if the response status is 'error'
if (newsData.Status == "error")
{
throw new HttpRequestException($"Error from News API: {newsData.ErrorMessage}");
}
return newsData;
}
这是我在自己的后端上的端点.
[HttpGet("GetNews")]
public async Task<IActionResult> GetNews([FromQuery] string country, [FromQuery] string category)
{
try
{
var news = await _newsService.GetNewsAsync(country, category);
return Ok(news);
}
catch (Exception ex)
{
return StatusCode(500, "An error occurred while processing your request");
}
}
一开始我认为这是一个竞争条件问题,因为我使用调试器并复制url粘贴到浏览器中进行测试,然后再进一步进行测试,但这显然是误导.这是SwaggerUI和newsapi的典型行为吗?