前言

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对象,其中封装了获取类型对象,然后判断,转换,调用回调函数。

c# webapi 自定义返回数据的更多相关文章

  1. 在做MVC和WebApi写返回数据时,可以这样定义

    public class Messages { /// <summary> /// 返回包含是否成功以及消息字符结果 /// </summary> /// <param ...

  2. django rest 自定义返回数据接口和异常处理

    参考 Django rest framework自定义返回数据格式 一.简介 drf 默认返回的异常格式是这样的 1 { 2 "username": [ 3 "该字段是必 ...

  3. WebApi自定义返回类型和命名空间实现

    1.自定义ContentNegotiator /// <summary> /// 返回json的ContentNegotiator /// </summary> public ...

  4. WebApi自定义全局异常过滤器及返回数据格式化

    WebApi在这里就不多说了,一种轻量级的服务,应用非常广泛.我这这里主要记录下有关 WebApi的相关知识,以便日后使用. 当WebApi应用程序出现异常时,我们都会使用到异常过滤器进行日志记录,并 ...

  5. WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型

    首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...

  6. 如何让webapi只返回json格式数据

    最近脑子不好用,总记不住事,以前搞过让webapi只返回json格式的数据,今天有人问我又突然想不起了,后来总结一下,备忘一下,大概有下面几种处理方式 1.在WebApiConfig类的Registe ...

  7. 3.自定义返回json格式的数据给前台(自定义Controller类中的Json方法)

    在mvc的项目中,我们前台做一些操作时,后台要返回一些结果给前台,这个时候我们就需要有一个状态来标识到底是什么类型的错误, 例如: 执行删除的时候,如果操作成功(1行受影响),我们需要返回状态为1并输 ...

  8. 自定义HttpMessageConverter实现RestTemplate的exchange方法返回自定义格式数据

    一 概述 实现如下效果代码,且可正常获取到返回数据: ResponseEntity<JsonObject> resEntity = restTemplate .exchange(url, ...

  9. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

  10. ASP.NET WebAPI 03 返回结果

    在WebAPI中HttResponseMessage作为消息返回,而在ApiController中我们经常讲四类数据作为返回值,void,object(可序列化),IHttpActionResult, ...

随机推荐

  1. Java 交换两个变量的值

    1 //交换两个变量的值 2 // 1 3 int nu1 = 10; 4 int nu2 = 20; 5 6 System.out.println("nu1 = "+nu1+&q ...

  2. [学习笔记]在Linux中使用源码编译的方式安装Nginx

    ​准备工作 准备nginx源码包: http://nginx.org/en/download.html 准备相关的依赖包以及环境: gzip 模块需要 zlib 库  http://www.zlib. ...

  3. arch安装discover ——KDE商店

    yay  -S discover sudo pacman -S archlinux-appstream-data packagekit-qt5 flatpak fwupd 安装完就可以使用KDE商店了

  4. Unity3D 横板跳跃游戏半成品demo源代码

    项目介绍: 基于B站的 Unity3D新手教程进行学习制作,但视频中的做法有很多BUG,此demo是经过优化,几乎修复了教程里带的所有bug. 实现了基本的功能比如:怪物ai,开始菜单,设置菜单,地图 ...

  5. 实时3D渲染它是如何工作的?可以在哪些行业应用?

    随着新兴技术--3D渲染的发展,交互应用的质量有了极大的提高.用实时三维渲染软件创建的沉浸式数字体验,几乎与现实没有区别了.随着技术的逐步改进,在价格较低的个人工作站上渲染3D图像变得更加容易,设计师 ...

  6. jQury(事件及其他方法)

    一. jQuery 事件注册 单个事件注册 语法: element.事件(function(){}) $("div").click(function(){ 事件处理程序 }) 其他 ...

  7. PagerAdapter深度解析和实践优化

    目录介绍 01.PagerAdapter简单介绍 02.PagerAdapter抽象方法 03.PagerAdapter原理介绍 04.PagerAdapter缓存和销毁 05.自定义PagerAda ...

  8. CoordinatorLayout滑动抖动问题

    目录介绍 01.CoordinatorLayout滑动抖动问题描述 02.滑动抖动问题分析 03.自定义AppBarLayout.Behavior说明 04.CoordinatorLayout滑动抖动 ...

  9. RecyclerView问题汇总

    目录介绍 25.0.0.0 请说一下RecyclerView?adapter的作用是什么,几个方法是做什么用的?如何理解adapter订阅者模式? 25.0.0.1 ViewHolder的作用是什么? ...

  10. 恶意软件开发(五)Linux shellcoding

    什么是shellcode? Shellcode通常指的是一段用于攻击的机器码(二进制代码),可以被注入到目标计算机中并在其中执行.Shellcode 的目的是利用目标系统的漏洞或弱点,以获取系统控制权 ...