.net core webapi post传递参数

我希望有个如你一般的人,如山间清爽的风,如古城温暖的光,从清晨到夜晚,从山野到书房,只要最后是你就好

传递一个参数:

后台:

[HttpPost]
public void Post([FromBody] string value)
{

}

前台这样写会报错:

$.ajax({
    url: 'http://localhost:8093/api/v1/test',
    type: "post",
    data: { "value": "sdfsf" },
    success: function (a) {
        console.log(a);
    }
});

415 (Unsupported Media Type):
在这里插入图片描述
contentType设置成:"application/json"

报错:400 (Bad Request)

把参数变成json字符串:

$.ajax({
                url: 'http://localhost:8093/api/v1/test',
                type: "post",
                contentType: "application/json",
                data:JSON.stringify({ "value": "sdfsf" }),
                success: function (a) {
                    console.log(a);
                }
            });

一样报错:400 (Bad Request)

在postman中也是一样:
在这里插入图片描述
经过测试,使用JSON.stringify({"","ss"}) , JSON.stringify({"value","ss"}) , {"value","ss"} , {"","ss"} 这四种方式都不行

应该这样写:

直接不带key的消息,key传递是空都是不得行的
在这里插入图片描述
效果如下:
在这里插入图片描述
post man中这样传递,直接给一个字符串是可以的
在这里插入图片描述
swagger测试的时候,注意也要带上双引号才行,不然也会报错的
在这里插入图片描述
httpclient访问情况可以参考:

https://www.tnblog.net/aojiancc2/article/details/3834

如果把后台修改成如下,把formbody去掉

[HttpPost]
public string Post(string value)
{
   return value;
}

这种方式用上面的所有尝试尝试都不行可以使用?的方式传递参数
在这里插入图片描述
post man中各种参数都尝试了一遍都不行,只能使用?传递参数
在这里插入图片描述
感觉很坑哇

但是直接通过request来取,from-datax-www-form-urlencoded都是成功取出来的
在这里插入图片描述
在这里插入图片描述
只是这样传递的时候要把那个请求json格式的标识去掉,否则request.from会报错
在这里插入图片描述

传递多个参数方法一:使用对象传递

后台:

[HttpPost]
public void Post([FromBody]DTO_MyFocus value)
{

}

首先要注意设置请求格式为json
在这里插入图片描述
不然会报错:415 Unsupported Media Type
在这里插入图片描述
传递一个对象还是比较科学的,只要设置好contentType设:application/json 即可成功
在这里插入图片描述
后台可以接受到参数:
在这里插入图片描述

前端ajax调用的时候注意:这样写会报错:415 Unsupported Media Type

var jsonobj = {
    "BlogName": "aaaa",
    "UserName": "晓"
};

$.ajax({
    url: 'http://localhost:8093/api/v1/test?value=ssss',
    type: "post",
    data: jsonobj,
    success: function (a) {
        console.log(a);
    }
});

在这里插入图片描述
因为你需要把请求头设置为json,

当然就算你把请求头设置成json后,如上的调用还是会报错:400 (Bad Request)

非常坑你需要把json转化成字符串才行,这也是和framework不同地方,postman中测试直接给json对象都可以

所以要注意这两个地方
在这里插入图片描述

传递多个参数方法二:JObject

和传递一个对象几乎是一样的,只是我们有时候觉得麻烦懒得就定义一个对象就可以使用JObject来实现了

[HttpPost]
public void Post(JObject jsonObject)
{
    //把jsonObject反序列化成dynamic
    string jsonStr = JsonConvert.SerializeObject(jsonObject);
    var jsonParams = JsonConvert.DeserializeObject<dynamic>(jsonStr);
    //获取dynamic里边的数据
    string destId = jsonParams.destId;
    string token = jsonParams.token;
}

jobject的解析还可以使用直接通过属性获取的方式

JObject jObject = JsonConvert.DeserializeObject<JObject>(result);
//通过summary属性获取新闻摘要
string summary = jObject["summary"].Value<string>();
//获取log_id
string log_id = jObject.GetValue("log_id").Value<string>();
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: dropzone.js 是一个非常流行的文件上传库,可以方便地在网页中实现文件拖拽上传的功能。而 ASP.NET Core WebAPI 是一个用于构建 Web API 的框架,可以快速地开发和部署具有高性能和可伸缩性的 Web API。 要在 ASP.NET Core WebAPI 中集成 dropzone.js,首先需要在前端代码中引入 dropzone.js 相关的脚本和样式文件。然后,在页面中创建一个用于接收文件上传的表单,并将其配置为使用 dropzone.js 进行文件上传。可以通过配置一些参数来自定义上传行为,例如设置文件上传的最大数量、文件大小限制、文件类型限制等。 在后端代码中,需要创建一个用于处理文件上传的 API 接口,该接口会接收前端发起的文件上传请求,并将上传的文件保存到指定的位置。可以使用 ASP.NET Core WebAPI 提供的 HttpRequest 对象来处理文件上传,通过读取请求的文件流来获取上传的文件内容,并将文件保存到指定的文件夹中。 在接收到文件上传请求后,需要进行一些验证和处理操作。例如,可以检查文件大小和类型是否符合要求,并根据需求进行相应的文件处理,例如修改文件名称、生成缩略图、写入数据库等。处理完成后,可以通过 API 接口返回相应的结果,例如返回上传成功的消息或返回上传失败的原因。 总结来说,使用 dropzone.js 和 ASP.NET Core WebAPI 可以很方便地实现文件上传功能。前端使用 dropzone.js 实现文件拖拽上传,后端使用 ASP.NET Core WebAPI 接受并处理上传的文件。通过结合使用这两个工具,可以轻松地实现一个功能强大且易于维护的文件上传功能。 ### 回答2: dropzone.js是一个基于JavaScript的文件上传库,它可以与asp.net core webapi配合使用来进行文件上传的处理。在使用dropzone.js时,我们需要引入相关的JavaScript和CSS文件,并建立一个HTML表单元素作为文件上传的区域。 在asp.net core webapi中,我们可以编写一个控制器来处理文件上传的请求。首先,我们需要在控制器中添加一个HttpPost方法,用于接收从前端传递过来的文件数据。然后,我们可以使用IFormFile接口来接收和处理上传的文件。 具体的实现步骤如下: 1. 在前端的HTML中,我们需要引入dropzone.js的相关文件,并在表单中定义一个用于文件上传的区域。可以设置一些参数来自定义文件上传的行为。 2. 在asp.net core webapi的控制器中,添加一个HttpPost方法,并使用[FromForm]特性将上传的文件绑定到IFormFile类型的参数中。 3. 在HttpPost方法中,可以对上传的文件进行处理,比如保存到服务器指定的路径中、返回文件的信息等。 主要的代码示例如下: 前端HTML代码: ```html <form action="/api/upload" class="dropzone" id="my-dropzone"></form> ``` 前端JavaScript代码: ```javascript Dropzone.options.myDropzone = { url: "/api/upload", maxFiles: 10, maxFilesize: 5, acceptedFiles: ".pdf,.jpg,.png", init: function () { this.on("success", function (file, response) { console.log("File uploaded:", file); }); }, }; ``` 后端C#代码: ```csharp [ApiController] [Route("api/[controller]")] public class UploadController : ControllerBase { [HttpPost] public async Task<IActionResult> UploadFile([FromForm] IFormFile file) { // 对上传的文件进行处理,比如保存到指定路径中 if (file != null && file.Length > 0) { var filePath = Path.Combine("path/to/save", file.FileName); using (var stream = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(stream); } } return Ok(new { message = "File uploaded successfully." }); } } ``` 通过以上代码,我们可以在前端页面中使用dropzone.js来实现文件的上传,并在后端的asp.net core webapi中编写相应的控制器来处理上传的文件。这样就可以实现一个基于dropzone.js和asp.net core webapi的文件上传功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值