• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#webapi自定义返回数据

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前言

webapi呢,我们创建的时候我给我们5个方法:get get(data)put post delete。

很明显,get,get(data)是用来获取,post用来修改数据的,put,delete用的比较少了,我习惯性用ajax,每接触webapi的时候很少delete和put,后来用的用的觉得还是要知道这四个不同的东西。

经过一查发现是http协议,既然是一种协议操作还是自己操作的,比如说传来4,5两个数,你相加还是相减还不是自己决定的?越来越多的程序员会去区分get,post,因为两者必须要清楚,

所以这就造成一个现象mvc可能不支持put,和delete,可能会报405错误,还有一点需要说明,delete不要去传数据,它是一种链接提交方式,然后还需要一点修改支持。

正文

webapi 返回函数有下面几种:

void();返回空。

json(content);json对象

这里我说明一下,有些人认为返回一个序列化的string和json他们不是最终传输的都是string吗,为何前台用ajax得到的一个是string一个是json,如果有着这样的疑问相信手写一遍ajax就没有疑问了,后面我会讲到。

ok和 ok(content)

Content(HttpStatusCode statusCode, T value) 自定义属性和返回类型

BadRequest() 返回400;

Redirect(string location) 重定向

还有自定义的IHttpactionResult;

说说原理吧 ,我所以把IHttpactionResult放到最后面是因为除了void(),其他都实现IHttpactionResult。

为什么是这样呢,因为http协议是有规范的,要有头吧,要有身体吧,所以webapi就封装了这样一个接口供大家去实现你对应的规范,上面这些只是webapi帮你封装好了的。

在下就示例一个它是怎么写的吧:

public class PageResult: ApiController,IHttpActionResult
{
  object _value;
  HttpRequestMessage _request;
  HttpStatusCode _code;
  public PageResult(T value, HttpStatusCode code)
  {
	_request = Request;
	_value = value;
	_code = code;
	//_request = request;
 }

  public Task ExecuteAsync(CancellationToken cancellationToken)
  {
	var response = new HttpResponseMessage()
	{
		Content = new ObjectContent(typeof(object), _value, new JsonMediaTypeFormatter()),
		RequestMessage = _request,
		StatusCode=_code	
	};
	return Task.FromResult(response);
  }
}

这样就自己实现了返回对象了,总的来说就是符合http协议即可。

差点忘记了,前面说的ajax,返回stirng类型和json类型,其实就是得到了头部的类型然后自己去转换的,不是说http传来的是json对象,http传的一定是个字符串,而不会是一个json对象,其中封装了获取类型对象,然后判断,转换,调用回调函数。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#内容格式刷html转成txt发布时间:2022-07-13
下一篇:
C#执行oraclesql语句出现中文不兼容的问题发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap