需要通过URL与参数的WebAPI [英] Need to pass the URL with arguments in webapi

查看:423
本文介绍了需要通过URL与参数的WebAPI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的URL来传递不同的API。

  /共享/ rendererjob  - 我做的
/共享/ rendererjob / {}的jobId - 我做的
/共享/ rendererjob / {}的jobId - 完成
/共享/ rendererjob / {}的jobId /状态 - 完成/共享/渲染/ documentconverter /文件 - 我做的
/共享/渲染/ documentconverter /存储 - 我做的
/共享/渲染/ documentconverter /回调 - 我做的?/共享/ rendererhealth Q = {}水平 - **我不知道如何做到这一个**

如何写这个webconfig.cs - ?/共享/ rendererhealth Q = {}级

我的设置code是下面。

  config.Routes.MapHttpRoute(
            名称:RendererApi
            routeTemplate:共享/ {控制器} / {} renderGUID
            默认:新{行动=rendererJob,renderGUID =
                            RouteParameter.Optional}
        );        config.Routes.MapHttpRoute(
            名称:RendererAPiStatus
            routeTemplate:共享/ {控制器} / {}的JobID /状态
            默认:新{行动=getJobStatus,作业ID = RouteParameter.Optional}
        );        config.Routes.MapHttpRoute(
            名称:DocumentConverterApi
            routeTemplate:共享/渲染/ {控制器} / {行动}        );

以上code正在为我所做的一切。
请让我知道如何配置与参数CONTROLER。

  **如何实现这一目标的路径 - 
 HTTP://本地主机:12345 /共享/ rendererhealth Q = {}水平**


解决方案

当你的路线似乎是非常依赖于控制,我会做的第一件事就是改变你现有的路由如下:

  config.Routes.MapHttpRoute(
    名称:RendererApi
    routeTemplate:共享/ rendererjob / {} renderGUID
    默认:新{行动=rendererJob
        renderGUID = RouteParameter.Optional,
        控制器=rendererJob}
    );config.Routes.MapHttpRoute(
    名称:RendererAPiStatus
    routeTemplate:共享/ rendererjob / {}的JobID /状态
    默认:新{行动=getJobStatus
        控制器=rendererjob}
    );config.Routes.MapHttpRoute(
    名称:DocumentConverterApi
    routeTemplate:共享/渲染/ documentconverter / {}行动,
    默认:新{控制器=documentconverter}
    );

请注意,你不能在一个路线中间的一个可选的参数,所以我已经改变了你的RendererAPiStatus路线,使作业ID是强制性的。

下一页末添加新的路由新资源:

  config.Routes.MapHttpRoute(
    名称:RendererHealthApi
    routeTemplate:共享/ rendererhealth
    默认:新{控制器=rendererhealth}
    );

您可以再添加新的控制器的方法:

 公共类RendererHealthController:ApiController
{
    公共字符串获取(INT Q)
    {
        返回你好;
    }
}

请注意上述假定您使用GET请求和{}水平是一个整数。

I have the below URLs to pass the different API.

/shared/rendererjob -- I done
/shared/rendererjob/{jobId} -- I done
/shared/rendererjob/{jobId} -- done
/shared/rendererjob/{jobId}/status -- done

/shared/renderer/documentconverter/document -- I done
/shared/renderer/documentconverter/storage -- I done
/shared/renderer/documentconverter/callback -- I done

/shared/rendererhealth?q={level} -- **I dont know how to do this one**

How to write the webconfig.cs for this -- /shared/rendererhealth?q={level}

My config code is below.

        config.Routes.MapHttpRoute(
            name: "RendererApi",
            routeTemplate: "shared/{controller}/{renderGUID}",
            defaults: new { action = "rendererJob", renderGUID =
                            RouteParameter.Optional     }
        );

        config.Routes.MapHttpRoute(
            name: "RendererAPiStatus",
            routeTemplate: "shared/{controller}/{jobid}/status",
            defaults: new { action = "getJobStatus", jobid = RouteParameter.Optional }
        );

        config.Routes.MapHttpRoute(
            name: "DocumentConverterApi",
            routeTemplate: "shared/renderer/{controller}/{action}"

        );

The above code is working for what I have done. Please let me know how to config the controler with arguments.

**How to achieve this path --       
 http://localhost:12345/shared/rendererhealth?q={level}**

解决方案

As your routes appear to be very controller dependent, the first thing I would do is change your existing routing as follows:

config.Routes.MapHttpRoute(
    name: "RendererApi",
    routeTemplate: "shared/rendererjob/{renderGUID}",
    defaults: new { action = "rendererJob", 
        renderGUID = RouteParameter.Optional,
        controller="rendererJob"     }
    );

config.Routes.MapHttpRoute(
    name: "RendererAPiStatus",
    routeTemplate: "shared/rendererjob/{jobid}/status",
    defaults: new { action = "getJobStatus",
        controller="rendererjob" }
    );

config.Routes.MapHttpRoute(
    name: "DocumentConverterApi",
    routeTemplate: "shared/renderer/documentconverter/{action}",
    defaults: new { controller="documentconverter" }
    );

Note you cannot have an optional parameter in the middle of a route so I have changed your RendererAPiStatus route so that jobid is mandatory.

Next add a new route at the end for your new resource:

config.Routes.MapHttpRoute(
    name: "RendererHealthApi",
    routeTemplate: "shared/rendererhealth",
    defaults: new { controller="rendererhealth" }
    );

You can then add your new controller method:

public class RendererHealthController : ApiController
{
    public string Get(int q)
    {
        return "hello";
    }
}

Note the above assumes you are using a GET request and {level} is an integer.

这篇关于需要通过URL与参数的WebAPI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆