Asp.Net WebApi接口返回值IHttpActionResult
WebApi是微软在VS2012 MVC4版本中绑定发行的,webapi2.0同mvc5发行的
webapi一共有以下接口返回值
1、void无返回值
2、IHttpActionResult
- Json(T content)
- Ok()、 Ok(T content)
- NotFound()
- 其他
- 自定义IHttpActionResult接口的实现
3、HttpResponseMessage
4、自定义类型
void无返回值
没有返回值,http状态码204。我感觉用处不大,一个好的api应该有返回值。
public class CeshiController : ApiController
{
public void PostSave()
{
//doing
}
}
IHttpActionResult
IHttpActionResult是Web API 2中引入的一个接口,IHttpActionResult是HttpResponseMessage的一个工厂类。IHttpActionResult是WebAPI中推荐的标准返回值,ApiController类中也提供了不少标准的工厂函数方便我们快速构建它们,如,Json,Ok,NotFound,BadRequest等。
1、Json<T>(T content)
比较常用的方法
namespace cms.Web.API
{
public class CeshiController : ApiController
{
public studentBLL bll = new studentBLL();
public IHttpActionResult GetList()
{
var list = bll.FindList();
return Json(list);
}
public IHttpActionResult GetList2()
{
dynamic data = new { name = "李白", age = };
return Json(data);
}
}
}
2、Ok()、 Ok<T>(T content)
比较常用的方法
namespace cms.Web.API
{
public class CeshiController : ApiController
{
public studentBLL bll = new studentBLL();
public IHttpActionResult GetList()
{
var list = bll.FindList();
return Ok(list);
}
public IHttpActionResult GetList2()
{
dynamic data = new { name = "李白", age = };
return Ok(data);
}
public IHttpActionResult PostAdd()
{
//表示不向客户端返回任何信息,只告诉客户端请求成功
return Ok();
}
public IHttpActionResult GetModel(int id)
{
var model = bll.Find(id);
return Ok(model);
}
}
}
3、NotFound()
比较常用的方法
找不到记录时,有时需要用到NotFound()方法
public IHttpActionResult GetModel(int id)
{
var model = bll.Find(id);
if (model == null)
{
return NotFound();
}
return Ok(model);
}
4、其他返回值
不常用
Content<T>(HttpStatusCode statusCode, T value)
public IHttpActionResult GetCeshi()
{
return Content(HttpStatusCode.OK, "hello webapi");
//return Ok("hello webapi")//一样的效果
}
BadRequest()
public IHttpActionResult GetCeshi(string name)
{
if (string.IsNullOrEmpty(name))
{
return BadRequest();
}
return Ok();
}
Redirect(string location)
public IHttpActionResult GetCeshi(string name)
{
return Redirect("https://www.cnblogs.com/webapi/");
}
HttpResponseMessage
这个对象也有它独特的使用场景,需要向客户端返回HttpResponse时就要用到这个对象。以下载为例,由于需要将下载的文件输出到客户端浏览器,Webapi的服务端需要向Web的客户端输出文件流,这个时候一般的IHttpActionResult对象不方便解决这个问题,于是HttpReponseMessage派上了用场。
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web.Http; namespace cms.Web.API
{
public class CeshiController : ApiController
{public HttpResponseMessage GetFile()
{
try
{
var FilePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/upload/ceshi.zip");
var stream = new FileStream(FilePath, FileMode.Open);
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "Wep Api Demo ceshi.zip"
};
return response;
}
catch
{
return new HttpResponseMessage(HttpStatusCode.NoContent);
}
}
}
}
自定义类型
你可以将webapi的接口和普通方法一样,返回任意的类型,WebApi会自动序列化你自定义任何返回类型,然后将序列化的值写到响应正文里,状态码统一返回200。
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web.Http;
using cms.BLL;
using cms.Model; namespace cms.Web.API
{
public class CeshiController : ApiController
{
public studentBLL bll = new studentBLL(); public IEnumerable<student> GetList()
{
var list = bll.FindList();
return list;
} public student GetModel(int id)
{
var model = bll.Find(id);
if (model == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return model;
} public string GetMsg()
{
return "webapi";
} }
}
// IHttpActionResult是WebAPI中微软官方推荐的标准返回值,建议大家使用这个,跟着微软走错不了。
Asp.Net WebApi接口返回值IHttpActionResult的更多相关文章
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解 ...
- (转)C# WebApi 接口返回值不困惑:返回值类型详解
原文地址:http://www.cnblogs.com/landeanfen/p/5501487.html 正文 前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi ...
- [转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
本文转自:http://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T c ...
- WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型
首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...
- WebApi 接口返回值类型详解 ( 转 )
使用过Webapi的园友应该都知道,Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 此篇就围绕这四块分 ...
- WebApi接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...
- C#进阶系列——WebApi接口返回值类型详解
阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义I ...
- ASP.Net WebAPI的返回值
Asp.Net WebAPI服务函数的返回值主要可以分为void.普通对象.HttpResponseMessag.IHttpActionResult e四种,本文这里简单的介绍一下它们的区别. 一.返 ...
- .Net Core 给WebApi接口返回值添加全局的日期格式化
public void ConfigureServices(IServiceCollection services) { services.AddMvc().AddJsonOptions(option ...
随机推荐
- EurekaServer高可用
前言 之前一篇文章文章<服务注册与发现---eureka>介绍了单点EurekaServer.但是实际环境中,这种单点的的模式可能会有很多隐形的问题.比如EurekaServer发生宕机, ...
- css3组件之几何图形
一.平行四边形 1.实心无边框 #parallelogram { width: 150px; height: 100px; -webkit-transform: skew(20deg); -moz-t ...
- UVA 814 The Letter Carrier's Rounds
大致翻译: 对于电子邮件应用程序,您需要描述发生在成对mta之间的基于smtp的通信.发送方 的用户代理向发送消息传输代理(MTA)提供格式化的消息.发送MTA使用SimpleMail 传输协议(SM ...
- BZOJ.5286.[AHOI/HNOI2018]转盘(线段树)
BZOJ LOJ 洛谷 如果从\(1\)开始,把每个时间\(t_i\)减去\(i\),答案取决于\(\max\{t_i-i\}\).记取得最大值的位置是\(p\),答案是\(t_p+1+n-1-p=\ ...
- BZOJ.2115.[WC2011]Xor(线性基)
题目链接 \(Description\) 给定一张无向带边权图(存在自环和重边).求一条1->n的路径,使得路径经过边的权值的Xor和最大.可重复经过点/边,且边权和计算多次. \(Soluti ...
- 第一章 初始STM32
1.3什么是STM32? ST是意法半导体,M是MIcroelectronisc的缩写,32表示32位. 合起来就是:ST公司开发的32位微控制器. 1.4 STM32 能做什么? STM32属于一个 ...
- Linux下nginx的使用
day02 .远程连接服务器故障排查 )道路是否通畅 )是否有劫财劫色 xxxxxx no route to host xxxx )洗浴中心是否提供你想要的服务 sshd远程连接服务 == ip 端口 ...
- node+express跨域处理
- Scrapy 使用CrawlSpider整站抓取文章内容实现
刚接触Scrapy框架,不是很熟悉,之前用webdriver+selenium实现过头条的抓取,但是感觉对于整站抓取,之前的这种用无GUI的浏览器方式,效率不够高,所以尝试用CrawlSpider来实 ...
- 更换本地Git全局账户命令
git config --global user.name gstok git config --global user.email @qq.com