欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

webapi创建及访问

程序员文章站 2022-07-01 20:39:26
一、webapi创建 1、创建项目 我使用的是VS2015,点开新建项目,安装如下操作执行: . 2、设置路由 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id} ......

 

一、webapi创建

1、创建项目

  我使用的是vs2015,点开新建项目,安装如下操作执行:

.webapi创建及访问

 webapi创建及访问

 

2、设置路由

 config.routes.maphttproute(
                name: "defaultapi",
                routetemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = routeparameter.optional }
            );

webapi创建及访问

3、设置控制器

在controllers 文件夹下创建一个示例控制器: apicontroller

webapi创建及访问

 webapi创建及访问

 webapi创建及访问

 至此webapi创建完成。

二、webapi访问

这里主要说明get和post访问方法。浏览器默认使用get请求方式,如果要使用post请求,需要下载插件,如火狐的restclient,ctrl+shift+a可进入下载。

[httpget]:表示使用get访问;(同时get方式访问可以给函数命名为get***)

[httppost]:表示使用post访问;

[acceptverbs("get", "post")]:post和get方法都支持;

1、get请求

  [httpget]
        public httpresponsemessage getsendrequest(string mo)
        {
            string rstr = "";

            httpwebrequest webrequest = (httpwebrequest)webrequest.create(url);
            webrequest.method = "get";
            httpwebresponse webresponse;
            try
            {
                //如果没有try...catch语句访问页面出现错误时本句会显示错误,使程序无法运行
                webresponse = (httpwebresponse)webrequest.getresponse();   //请求页面信息
            }
            catch (webexception ex)
            {
                webresponse = (httpwebresponse)ex.response;   //获得错误发生时候服务器段错误页面的源代码
            }
            streamreader sr = new streamreader(webresponse.getresponsestream(), system.text.encoding.getencoding("utf-8"));    //getresponsestream()方法获取http响应的数据流,并尝试取得url中所指定的网页内容   
                                                                                                                               //streamreader类的read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:utf8)
            rstr = sr.readtoend();
            sr.close();
            webresponse.close();
            //httpresponsemessage result = new httpresponsemessage { content = new stringcontent(rstr, system.text.encoding.getencoding("utf-8"), "application/json") };  //避免页面出现<string></string>,只返回json字段
            //return result;
            return rstr;
        }

 

访问网址:http://localhost:58601/api/api/getsendrequest?mo=001000012111

(http://localhost:58601/api/控制器名/方法名)

 2、post请求

[httppost]
        public string sendrequest(string param)
        {
            httpwebrequest req = (httpwebrequest)httpwebrequest.create(url);
            encoding encoding = encoding.utf8;

            byte[] bs = encoding.ascii.getbytes(param);
            string responsedata = string.empty;
            req.method = "post";
            //application/x-www-form-urlencoded默认是a=1&b=2&c=3类型
            //application/json默认参数是a:1&b:2&c:3类
            req.contenttype = "application/x-www-form-urlencoded";
            req.contentlength = bs.length;
            using (stream reqstream = req.getrequeststream())
            {
                reqstream.write(bs, 0, bs.length);
                reqstream.close();
            }
            using (httpwebresponse response = (httpwebresponse)req.getresponse())
            {
                using (streamreader reader = new streamreader(response.getresponsestream(), encoding))
                {
                    responsedata = reader.readtoend().tostring();
                }
            }
            //    httpresponsemessage result = new httpresponsemessage { content = new stringcontent(responsedata, system.text.encoding.getencoding("utf-8"), "application/json") };

            return responsedata;
        }

 

访问网址:http://localhost:58601/api/api/sendrequest?param=0&moid=1&partno=2&stationid=t

(http://localhost:58601/api/控制器名/方法名)