找回密码
 会员注册
查看: 159|回复: 0

ASP.NET Core Web项目编写API并返回结构化Json

[复制链接]

1389

主题

5

回帖

496万

积分

管理员

积分
4962988
发表于 2024-2-29 08:29:03 | 显示全部楼层 |阅读模式

从ASP.NET MVC(.NET Framework)开发转为ASP.NET Core MVC(.NET Core)开发需要一个逐步摸索的过程,因为微软为了实现跨平台而重写了所有的dll,而且许多接口方法也都重写了。

我用的是Visual Studio 2019 Enterprise

【1】首先,选择项目类型并创建

【2】选择项目模版(虽然我们开发的是API项目,但是因为模式选择的还是MVC,所以模板还是选择MVC项目)

【3】创建实体类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. namespace core1.Models
  6. {
  7. public class User
  8. {
  9. public int Id { get; set; }
  10. public string Username { get; set; }
  11. public string Phonenumber { get; set; }
  12. public string Password { get; set; }
  13. public DateTime CreateTime { get; set; }
  14. public string Remark { get; set; }
  15. public string ImageUrl { get; set; }
  16. public string Feedback { get; set; }
  17. }
  18. }
复制代码

【4】创建数据库上下文(注:我的数据库和表是之前已经创建好的)

  1. using Microsoft.EntityFrameworkCore;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. namespace core1.Models
  7. {
  8. public class DbEntity : DbContext
  9. {
  10. public DbSet<User> Users { get; set; }
  11. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  12. {
  13. optionsBuilder.UseSqlServer(@"data source=/*数据库地址*/;initial catalog=/*数据库名称*/;User Id=/*数据库账户名*/;Password=/*数据库密码*/ ");
  14. }
  15. }
  16. }
复制代码

【5】创建Controller

     所有创建的Controller都是默认继承ControllerBase,这是所有MVC控制器的基类,经过测试发现不支持重写Dispose方法和Newtonsoft.Json,之后我选择将ControllerBase改为Controller(其实也就是选择了MVCController),完美兼容,在ASP.NET MVC中,我通常使用IHttpActionResult这一数据返回类型返回Json格式数据,但在Core中显然不支持,所以我更换为了IActionResult。  

     此外,我还将类上方的路径格式从

  1. [Route("api/[controller]")]
复制代码

改为

  1. [Route("api/[controller]/[action]")]
复制代码

否则无法访问特定的方法。

完整代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Microsoft.EntityFrameworkCore;
  8. using core1.Models;
  9. using System.Net.Http;
  10. using Parttime.Helper;
  11. namespace core1.Controllers
  12. {
  13. [Route("api/[controller]/[action]")]
  14. [ApiController]
  15. public class UsersController : Controller
  16. {
  17. private DbEntity db = new DbEntity();
  18. protected override void Dispose(bool disposing)
  19. {
  20. if (disposing) db.Dispose();
  21. base.Dispose(disposing);
  22. }
  23. //[Route("Users")]
  24. public IActionResult GetUsers()
  25. {
  26. List<User> users = db.Users.ToList();
  27. return Json(new
  28. {
  29. datas =users.Select(s=>new
  30. {
  31. s.Id,
  32. s.Username,
  33. s.Phonenumber,
  34. s.Password,
  35. s.CreateTime,
  36. s.ImageUrl
  37. })
  38. });
  39. }
  40. }
  41. }
复制代码

返回类型也可以使用其他兼容Json的类型。

【6】接口测试

利用Postman对编写好的接口进行测试:

可以发现,数据成功获取到了。

最近在学习Core和Docker,后面还会继续与大家分享。

 

 


来源:https://blog.csdn.net/qq_38890412/article/details/94214547
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?会员注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 01:25 , Processed in 0.891718 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表