《基于AspNet的json配置WebAPI》

2024-05-24 07:58
文章标签 配置 json webapi aspnet

本文主要是介绍《基于AspNet的json配置WebAPI》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 项目简介
    • 概述
    • 项目环境
    • 配置文件`json`示例
    • Swagger
  • 项目实施
    • json文件路径配置
    • 接口类
    • 接口实现
    • IIS部署
    • 接口
  • 项目小结

项目简介

概述

  • 基于C# ASP.NET 框架开发的WebAPI
  • 通用的Json配置(无需创建配置参数类)
  • IIS部署WebAPI,远程接口访问查询和修改配置
  • 接口包括获取和修改json、通过key获取和修改json

项目环境

  • VisualStudio 2019

  • .Net 5.0

配置文件json示例

{"name": "tmp","id": 1001,"input": {"key1": 1.2,"key2": [1,2,3]},"output": {"key1": "val2","key2": 32}
}

Swagger

在这里插入图片描述

项目实施

json文件路径配置

  • appsetting.json配置json文件路径
"ConfigPath": "./Config/config.json",
  • 读取配置并注册服务
string configPath = configuration.GetValue<string>("ConfigPath");
services.AddSingleton<IConfigManager>(new ConfigManager(configPath));

接口类

  • RemoteJsonConfigController
    • 查询返回字符串
    • 目前第一层key,嵌套key待实现
    • PUT接口,通过输入JsonElement 类实现json输入无需输入"", 参考
[HttpGet]
public IActionResult GetJsonFile()
{var json = _configManager.GetJsonFile();return Ok(json);
}[HttpGet("{key}")]
public IActionResult GetJsonByKey(string key)  
{var json = _configManager.GetJsonByKey(key);if (json==null){return StatusCode(400, $"[GetJsonByKey] {key} not exist!");}return Ok(json);
}[HttpPut]
public IActionResult UpdateJson([FromBody] JsonElement body)
{string json = System.Text.Json.JsonSerializer.Serialize(body);   // _configManager.UpdateJson(json);return Ok();
}[HttpPut("{key}")]
public IActionResult UpdateJsonByKey(string key, [FromBody] JsonElement body)
{_configManager.UpdateJsonByKey(key, body);return Ok();
}

接口实现

  • ConfigManager.cs
    • UpdateJsonByKeyvalue的种类,主流已支持,具体还要再加一些
    • 整体还要加一下错误处理
public string GetJsonFile()
{string json = string.Empty;using (FileStream fs = new FileStream(_configPath, FileMode.Open, System.IO.FileAccess.Read, FileShare.Read)){using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)){json = sr.ReadToEnd().ToString();}}return json;
}public string GetJsonByKey(string key)
{string json_key = null;using (FileStream fs = new FileStream(_configPath, FileMode.Open, System.IO.FileAccess.Read, FileShare.Read)){using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)){var json = sr.ReadToEnd().ToString();JObject o = JObject.Parse(json);json_key = o[key] == null ? null : o[key].ToString();}}return json_key;
}public void UpdateJson(string json)
{using (FileStream fs = new FileStream(_configPath, FileMode.Create, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite)){using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)){sw.WriteLine(json);}}
}public bool UpdateJsonByKey(string key, JsonElement body)
{var json_all = GetJsonFile();if (json_all != null){JObject json_o = JObject.Parse(json_all);Console.WriteLine(json_o[key].Type);bool ret = true;switch (json_o[key].Type){case JTokenType.Integer:json_o[key] = body.GetInt64();break;case JTokenType.Float:json_o[key] = body.GetDouble();break;case JTokenType.Date:json_o[key] = body.GetDateTime();break;case JTokenType.Object:json_o[key] = JObject.Parse(System.Text.Json.JsonSerializer.Serialize(body));break;case JTokenType.String:json_o[key] = body.GetString();break;default:ret = false;break;}UpdateJson(json_o.ToString());return ret;}return false;
}

IIS部署

  • 打开 【启用或关闭Windows功能】
    在这里插入图片描述

  • 搜索 【IIS】
    在这里插入图片描述

  • 右键——添加网站
    在这里插入图片描述

  • 设置

    • 网站名
    • 文件地址
    • 端口号
      • 80端口是电脑默认端口,输入可以不要输入端口直接访问
      • 端口不能重复
  • 浏览网站,看看是否发布成功
    在这里插入图片描述

  • 或者直接输入

127.0.0.1:88/swagger
或者
localhost:88/swagger

接口

  • 打开swagger
localhost:88/swagger
  • 获取json配置(method=GET)
localhost:88/config
  • 修改json(method=PUT)
localhost:88/config(method=GET)
  • 按key获取json
localhost:88/config/name
  • 按key修改json(method=PUT)
localhost:88/config/name

项目小结

  • 一个简单的demo,实现起来很快,无需自己写处理json的server
  • 可以自己写客户端UI来调这些接口,怕麻烦可以直接用swagger
  • 配置文件采用通用json,处理以字符串形式来处理
  • 错误处理,嵌套key还需再完善
  • 工程文件地址,可简单参考

这篇关于《基于AspNet的json配置WebAPI》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997825

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对