是否有运行Web API服务时找不到的get方法

时间:2019-05-24 12:20:13

标签: asp.net-mvc http-get

我正在创建一个Web api控制器并使用数据类型类实现([HttpGet])参数化的get方法,但是当我运行此方法时,它显示404 Not Found。 当我实现字符串或int之类的普通数据类型时,它向我显示答案或诸如List之类的数据类型仍然给了我答案,但是当我直接将数据类型声明为像Student这样的类时,它的show 404未找到错误。我不知道为什么会这样。我正在尝试使用MVC学习Web API,请帮助我。

我正在创建一个简单的Student类和一个studentapicontroller。在我的api控制器中,我创建了具有数据类型类的get方法,并且出于测试目的,我制作了具有不同数据类型的其他get方法

Student.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace epay.Models
{
   public class student
   {
    public int id { get; set; }
    public string name { get; set; }
}
}

studentapiController:

using System;
using System.Collections.Generic;  
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using epay.Models;

namespace epay.Controllers
{
  public class studentapiController : ApiController
  {
    // GET api/studentapi
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET api/studentapi/5

    {
        return "value";
    }

    // POST api/studentapi
    public void Post([FromBody]string value)
    {
    }

    // PUT api/studentapi/5
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/studentapi/5
    public void Delete(int id)
    {
    }


    //POST api/studentapi/
    [HttpGet]
    public student getdetails(int id, string na)
    {
        student st = new student();
        st.id = id;
        st.name = na;
        return st;
    }

    //GET api/studentapi/getstud
    [HttpGet]
    public List<student> getstud()
    {
        List<student> lst = new List<student>();
        student st = new student();
        st.name = "manlai";
        st.id = 5;
        lst.Add(st);
        return lst;
    }
  }

}

我只想要getdetails结果,或者如果我要将我的方法数据类型作为类并且要通过get方法传递参数怎么做,该怎么做

1 个答案:

答案 0 :(得分:0)

进行如下所示的getdetails路由,因为它与get冲突

[HttpGet("getdetails")]
    public student getdetails(int id, string na)
    {
        student st = new student();
        st.id = id;
        st.name = na;
        return st;
    }

您可以使用querystring / studentapi / getdetails?id = 1&na = test

呼叫类似这样的路由