webAPI方法调用,路由的配置,跨域等简单小例

19 篇文章 0 订阅

webAPI方法调用,路由的配置简单小例:

1、前台AJAX调用:  $.ajax({
            type: "GET",
            url: "/openapi/v3/Question/GetTable",
            dataType: 'json',
            data: {
             
            },
            success: function (msg) {
                var dd = JSON.stringify(msg);
                $.ajax({
                    type: "POST",
                    url: "/openapi/v3/Question/ExportQuestion",
                    dataType: 'json',
                    data: {
                        "orgName": "abc",
                        "corseName": "efc",
                        "typeName": "单选题",
                        "exportType":1,
                        "jsons": dd
                    },
                    success: function (msg1) {


                        // 前台js中动态生成一个form,并通过它实现下载功能
                        var form = $('<form></form>');
                        form.attr('action', '/openapi/v3/Question/Export');
                        form.attr('method', 'Get');
                        form.css('display', 'none');
                        var input1 = $('<input type="hidden" name="filePath" value="' + msg1 + '" />');
                        form.append(input1);
                        form.appendTo('body');
                        form.submit();
                    }
                });
            }
        });

get传输呢,参数长度有限制,当传输json等很长参数时,最好使用POST进行,post没有限制,后台接收post数据时,采用实体类形式;


2、路由配置:

namespace ItemBank.ESB.Areas.v3.Controllers
{
    [RoutePrefix("openapi/v3/Question")]
    public class v3QuestionController : ApiController
    {

统一进行路由前缀,这样写在类外面使用RoutePrefix;当一个方法不想使用统一前缀时;那么就是用~波浪号进行修饰:

例如( [HttpGet, Route("~/openapi/v3/ItemBank/{ItemBankID}/QuestionTypes")])这样就可以重新定义路由规则。

3、后台接收ajax传入后台数据,使用HttpResponseMessage返回前台

  [HttpPost]
        [Route("ExportQuestion")]
        public HttpResponseMessage ExportQuestion(ExportClass model)
        {
           
            HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK);
            string result = service.ExportQuestion(model.orgName, model.corseName, model.typeName, model.exportType, model.jsons);
            if (result == null)
                message.StatusCode = HttpStatusCode.NotFound;
            message.Content = new ObjectContent<string>(result, new JsonMediaTypeFormatter());
            return message;
        }
        #endregion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值