c# webapi 自定义返回数据
前言
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 自定义返回数据的更多相关文章
- 在做MVC和WebApi写返回数据时,可以这样定义
public class Messages { /// <summary> /// 返回包含是否成功以及消息字符结果 /// </summary> /// <param ...
- django rest 自定义返回数据接口和异常处理
参考 Django rest framework自定义返回数据格式 一.简介 drf 默认返回的异常格式是这样的 1 { 2 "username": [ 3 "该字段是必 ...
- WebApi自定义返回类型和命名空间实现
1.自定义ContentNegotiator /// <summary> /// 返回json的ContentNegotiator /// </summary> public ...
- WebApi自定义全局异常过滤器及返回数据格式化
WebApi在这里就不多说了,一种轻量级的服务,应用非常广泛.我这这里主要记录下有关 WebApi的相关知识,以便日后使用. 当WebApi应用程序出现异常时,我们都会使用到异常过滤器进行日志记录,并 ...
- WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型
首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...
- 如何让webapi只返回json格式数据
最近脑子不好用,总记不住事,以前搞过让webapi只返回json格式的数据,今天有人问我又突然想不起了,后来总结一下,备忘一下,大概有下面几种处理方式 1.在WebApiConfig类的Registe ...
- 3.自定义返回json格式的数据给前台(自定义Controller类中的Json方法)
在mvc的项目中,我们前台做一些操作时,后台要返回一些结果给前台,这个时候我们就需要有一个状态来标识到底是什么类型的错误, 例如: 执行删除的时候,如果操作成功(1行受影响),我们需要返回状态为1并输 ...
- 自定义HttpMessageConverter实现RestTemplate的exchange方法返回自定义格式数据
一 概述 实现如下效果代码,且可正常获取到返回数据: ResponseEntity<JsonObject> resEntity = restTemplate .exchange(url, ...
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解 ...
- ASP.NET WebAPI 03 返回结果
在WebAPI中HttResponseMessage作为消息返回,而在ApiController中我们经常讲四类数据作为返回值,void,object(可序列化),IHttpActionResult, ...
随机推荐
- Java 小案列 this关键字使用+构造器 +方法+调用
1 package com.bytezero.thistest; 2 3 public class Boy 4 { 5 private String name; 6 private int age; ...
- 按值传递,引用传递 浅析java String ,对象与对象引用的区别
目录 一.前言 二.何谓对象? 三.何谓对象引用? 四.创建对象 Vehicle veh1 = new Vehicle(); 五.参数传值 六.Java Sting 最后!有错误的地方欢迎指正 一.前 ...
- 音频信号质量的度量标准--MOS得分的由来
早期语音质量的评价方式是凭主观的,人们在打通电话之后通过人耳来感知语音质量的好坏.1996年国际ITU组织在ITU-T P.800和P.830建议书开始制订相关的评测标准:MOS(Mean Opini ...
- Android 圆形进度条ProgressBar实现固定进度
原文: Android 圆形进度条ProgressBar实现固定进度-Stars-One的杂货小窝 之前遇到一个问题,发现Android里的圆形进度条无法固定一个进度,记录一下解决方法 探究 假设我们 ...
- 记录--你知道Vue中的Scoped css原理么?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 追忆Scoped 偶然想起了一次面试,二面整体都聊完了,该做的算法题都做出来了,该背的八股文也背的差不多了,面试官频频点头,似乎对我的基础 ...
- 《.NET内存管理宝典 》(Pro .NET Memory Management) 阅读指南 - 第1章
本章勘误: 暂无,等待细心的你告诉我哦. 本章注解: 第7页图1-4下面的第一段:堆栈从一开始就与计算机编程有着内在的联系,这主要是因为子例程的概念 什么是子例程呢? 一般地认为,子例程是某个主程序的 ...
- HDFS Short-Circuit Local Reads
目录 1.背景 2.配置 2.1 检测是否启用libhadoop.so 2.2 设置套接字路径 2.3 配置示例 2.4.1 /var/lib/hadoop-hdfs目录未创建 2.4.2 创建 /v ...
- 详解SSL证书系列(6)了解HTTP及网络基础
使用HTTP协议访问Web 你知道当我们在网页浏览器(比如Chrome)的地址栏中输入URL时,Web网页是如何呈现的吗? Web页面当然不会凭空显示出来.根据Web浏览器地址栏中指定的URL,W ...
- [开源初探]screenshot-to-code:将截图转化为代码
介绍说明 将截图转化为 HTML 代码的工具.该项目可以将屏幕截图转化为 HTML/JS/Tailwind CSS 代码,它使用 GPT-4 Vision 生成代码.DALL-E 3 生成相似的图片. ...
- RMI反序列化分析
RMI介绍 RMI全程Remote Method Invocation (远程方法引用),RMI有客户端和服务端,还有一个注册中心,在java中客户端可以通过RMI调用服务端的方法,流程图如下: 服务 ...