首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web APi路由了解

问Web APi路由了解
EN

Stack Overflow用户
提问于 2014-08-15 19:26:47
回答 1查看 114关注 0票数 0

我已经创建了一个名为WebPortalController的新控制器,但是当我通过浏览器调用它或尝试调用它时,我无法访问下面的方法,只是说找不到资源。如果需要,我是否需要向RoutesConfig.cs代码添加新的路由?

代码语言:javascript
复制
namespace WebApi.Controllers
{
public class WebPortalController : ApiController
{
    // GET api/webportal
    private WebPortEnterpriseManagementDa _da = new WebPortEnterpriseManagementDa();


    public ManagedType Get(string name)
    {

        ManagedType items = _da.GetManagedType(name);

        return items;
    }


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

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

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

路由文件

代码语言:javascript
复制
namespace WebApi
{
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );


    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-08-15 22:17:35

您所显示的路由配置用于MVC路由,位于App_Start/RouteConfig文件中。检查App_Start/WebApiConfig中是否设置了默认API路由:

代码语言:javascript
复制
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional } 
);

然后,您需要更改Get方法中的参数名称以匹配路由参数:

代码语言:javascript
复制
public ManagedType Get(string id)
{
    ManagedType items = _da.GetManagedType(name);
    return items;
}

这应该允许您使用以下命令通过浏览器调用Get方法:

代码语言:javascript
复制
localhost:55304/api/WebPortal/Test

为了测试Post/Put/Delete方法,您需要使用Fiddler或浏览器插件,如Postman

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25325631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档