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

来源:互联网 发布:如何建立淘宝网店 编辑:程序博客网 时间:2024/05/17 22:04

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

0 0
原创粉丝点击