我有5个项目:
如何通过客户端从WEB调用API控制器? 因为当我从客户端调用Home控制器(WEB)方法时,它会转到客户端,在这里我应该创建一个API请求。但....
我不知道如何撰写正确的网址。 像这样的网址:
http://localhost:56543/api/students/4
不起作用,它会返回404错误。
代码:
public StudentDTO find(int id)
{
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(Base_URL);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("student/" + id.ToString()).Result;
if (response.IsSuccessStatusCode)
return response.Content.ReadAsAsync<CountryDTO>().Result;
return null;
}
catch
{
return null;
}
私人字符串Base_URL =&#34; http://localhost:56543/api/&#34 ;;
答案 0 :(得分:0)
根据以上帖子中的这些评论:
Api层:public IHttpActionResult GetStudent(int id){stRepository.GetStById(id); return Ok(stRepository.GetStById(id)); }
“country”是Api Controller的名称
好像你的路线错了。 要解决您期望的路线 - http://localhost:56543/api/students/4,你应该有
如果您的控制器名称是“国家/地区”,请尝试http://localhost:56543/api/country/4。 如果您在具有上述签名的国家/地区控制器中有多个GET操作,则会再次抛出此错误。
除非您显示api控制器代码,否则无法解决您的问题
如果您还想使用国家/地区控制器,并且您在该控制器中有多个GET方法,那么我会建议属性路由。
在web api配置中,添加:
config.MapHttpAttributeRoutes();
在您的api控制器操作中
[HttpGet]
[Route("~api/students/{id}")]
public IHttpActionResult GetStudent(int id)
{
stRepository.GetStById(id);
return Ok(stRepository.GetStById(id));
}
通过上述配置,您将在路径http://localhost:56543/api/students/4中获得学习详细信息 - 在保持API项目运行后尝试从浏览器中访问此URL。
但我强烈建议您让学生控制器代替国家控制器获取学生详细信息