www.91084.com

GVKun编程网logo

如何将对象发布到WebAPI(如何将对象写入文件)

6

本篇文章给大家谈谈如何将对象发布到WebAPI,以及如何将对象写入文件的知识点,同时本文还将给你拓展ASP.NETWEBAPI:如果禁用了CORS,为什么我可以从localhost发布到webapi?

本篇文章给大家谈谈如何将对象发布到WebAPI,以及如何将对象写入文件的知识点,同时本文还将给你拓展ASP.NET WEB API:如果禁用了 CORS,为什么我可以从 localhost 发布到 web api?、asp.net WebApi WebApiConfig.cs Web API 配置和服务、Asp.net WebApi WebApiConfig.cs(Web API 配置和服务)、ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何将对象发布到WebAPI(如何将对象写入文件)

如何将对象发布到WebAPI(如何将对象写入文件)

我试图弄清楚如何将对象从表单发布到Web api服务。在我的控制器中,我定义了一个想要向其添加输入值的模型。

$scope.Label;

在我的输入字段中,我将它们绑定起来,ng-model例如:

<input type="checkbox" ng-model="label.isPublic" /><input type="text" ng-model="label.labelName" required focus-me />

在提交表单时,将这两个字段传递给我的服务并提交给我的WebApi

我已经通过两种方式尝试了此提交:

function addLabel(label) {        var mylabel = encodeURIComponent(angular.toJson(label));        return $http.post(''reportLibrary/createlabel/'', { params: label }, {        }).then(function (response) {            return response.data;        });    };

并且也如下,不声明参数

function addLabel(label) {        var mylabel = encodeURIComponent(angular.toJson(label));        return $http.post(''reportLibrary/createlabel/'', label , {        }).then(function (response) {            return response.data;        });    };

在webAPI中,我为帖子设置了一个方法

 [Route ("reportLibrary/createlabel/")]        [HttpPost]        public DTOs.ReportLabel CreateLabel(DTOs.ReportLabel json)        {            DTOs.ReportLabel result = new DTOs.ReportLabel();        //.... do stuff            return result;        }

ReportLabel(dto)的定义如下:

public class ReportLabel{    public Int64 LabelId { get; set; }    public string LabelName { get; set; }    public bool IsPublic { get; set; }    public IEnumerable<Report> Reports { get; set; }//placeholder?}

我遇到的问题是,当我从我的角度服务发布对象时,该对象在API中显示为null。如果我将方法的类型更改为JToken或JObject之类的值,则会出现值。

谁能帮助我理解为什么当我定义不从angular传递过来的类型时?

谢谢

答案1

小编典典

看来您可能正在执行额外的步骤。您不需要在json中编码,然后在json中传递

return $http.post(''reportLibrary/createlabel/'', { LabelId: 101, LabelName: ''myname'' }, {

然后

 public DTOs.ReportLabel CreateLabel([FromBody]ReportLabel reportLabel)

看一下经过的网络值,您应该在调试工具或提琴手中看到实际发布的值(表单值)。

ASP.NET WEB API:如果禁用了 CORS,为什么我可以从 localhost 发布到 web api?

ASP.NET WEB API:如果禁用了 CORS,为什么我可以从 localhost 发布到 web api?

如何解决ASP.NET WEB API:如果禁用了 CORS,为什么我可以从 localhost 发布到 web api?

场景:

CORS 已禁用。 API 托管在 Azure 中。为什么我可以从我的机器发布到 web api,我认为是 localhost 域?如果我完全误解了 CORS 的作用,有人可以告诉我吗?

谢谢!

解决方法

虽然 CORS 是在服务器上配置的,但由客户端来强制执行。

大多数网络浏览器都会强制执行它,如果服务器上未启用它,则会回退到同源策略。

如果您使用 Postman 等 HTTP 客户端或在其他应用程序中运行的代码发出请求,则 CORS 不是一个因素。

asp.net WebApi WebApiConfig.cs Web API 配置和服务

asp.net WebApi WebApiConfig.cs Web API 配置和服务

 

public static void Register(HttpConfiguration config)
{

...............................

var jsonSettings = config.Formatters.JsonFormatter.SerializerSettings;
//获取或设置在序列化和反序列化期间如何处理空值。
jsonSettings.NullValueHandling = NullValueHandling.Ignore;//在序列化和反序列化对象时忽略空值。

// 移除XML序列化器
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Formatters.JsonFormatter.Indent = true;
// 解决json序列化时的循环引用问题
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
//日期格式
var dateTimeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter {
DateTimeFormat = "yyyy-MM-dd HH:mm:dd"
};
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(dateTimeConverter);

...............................

}

Asp.net WebApi WebApiConfig.cs(Web API 配置和服务)

Asp.net WebApi WebApiConfig.cs(Web API 配置和服务)

public static void Register(HttpConfiguration config)
{
//...............................
var jsonSettings = config.Formatters.JsonFormatter.SerializerSettings;
//获取或设置在序列化和反序列化期间如何处理空值。
jsonSettings.NullValueHandling = NullValueHandling.Ignore;//在序列化和反序列化对象时忽略空值。

// 移除XML序列化器
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Formatters.JsonFormatter.Indent = true;
// 解决json序列化时的循环引用问题
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
//日期格式
var dateTimeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter {
DateTimeFormat = "yyyy-MM-dd HH:mm:dd"
};
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(dateTimeConverter);
//...............................
}

ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi

ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi

写在前面


最近在做一个app的时候发现需要写后台服务。所以,在考虑是使用webapi还是使用webserver来写这个后台服务的时候。爱纠结的我,最后还是选择了使用webapi来写这个后台服务。 原因有二

1.webapi 使用的是http的通讯协议想比于webserver soap通讯协议会更好。

2.webapi 是无状态的,所以,它会比webserver更轻量。

3.webapi 目前支持post,get,等http请求。

为了以后工作的需要,mark学习webapi的整个过程。废话不多说,来创建我们的第一个webapi程序吧。

创建webapi服务


1.首先,打开 vs 2013 选择文件-->新建-->项目。

2.选择 Visual C# Web -->选择ASP.NET Web 应用程序-->输入项目名称MyWebApi_01-->点击浏览(选择项目存放的地方)-->点击确定。

然后会弹出类似于这样选择的窗体

3.选择Empty-->Web Api-->确定。

就完成了创建一个新的web api 的后台应用程序服务了。

注意:现在的是一个空的应用程序。我们还需要做些简单的配置。才能正常的运行这个程序。

创建webapi控制器


1.首先,我们需要创建一个新的api控制器。

2.选择Controllers文件夹鼠标右键-->添加-->控制器

3.选择web api 2控制器-空-->添加

4.输入控制名称-->确定

5.完成一个控制器的添加

webapi 配置


1.打开App_Start文件夹-->WebApiConfig右键-->修改webapi路由

webapi 输出


打开Home控制器,编辑

[httpGet]
public IEnumerable<string> InputString(){
return new string[] { "hellow world" };
}

最后,在浏览器中输入请求的路由 api/home/InputString 。

输出hellow wolrd,证明整个web api 创建已经完成。

今天关于如何将对象发布到WebAPI如何将对象写入文件的分享就到这里,希望大家有所收获,若想了解更多关于ASP.NET WEB API:如果禁用了 CORS,为什么我可以从 localhost 发布到 web api?、asp.net WebApi WebApiConfig.cs Web API 配置和服务、Asp.net WebApi WebApiConfig.cs(Web API 配置和服务)、ASP.NET WebApi 学习与实践系列(1)---如何创建 WebApi等相关知识,可以在本站进行查询。

本文标签: