如何创建一个WebApi服务端

第一步:创建项目

1.创建一个新的 ASP.NET Core Web API 项目

第二步:创建模型文件

1.在项目根目录下创建 Models 文件夹

2.然后创建 Models/OpenProductReportRequest.cs 文件,内容如下:

cs 复制代码
namespace AGVProductReportServer.Models
{
    public class OpenProductReportRequest
    {
        public List<string> BoxesList { get; set; } = new List<string>();
        public string AgvPoint { get; set; } = string.Empty;
    }
}
cs 复制代码
namespace AGVProductReportServer.Models
{
    public class OpenProductReportResponse
    {
        public int Code { get; set; }
        public string Message { get; set; } = string.Empty;
        public bool Result { get; set; }
        public bool Success { get; set; }
    }
}

第三步:创建控制器

1.创建 Controllers/OpenProductReportController.cs 文件

cs 复制代码
using AGVProductReportServer.Models;
using Microsoft.AspNetCore.Mvc;

namespace AGVProductReportServer.Controllers
{

    [ApiController]
    [Route("mes-standard-biz/mesProductReport")]
    public class OpenProductReportController : ControllerBase
    {
        [HttpPost("openProductReport")]
        public IActionResult OpenProductReport([FromBody] OpenProductReportRequest request)
        {
            // 检查请求是否为空
            if (request == null ||
                string.IsNullOrEmpty(request.AgvPoint) ||
                request.BoxesList == null ||
                request.BoxesList.Count == 0)
            {
                return BadRequest(new OpenProductReportResponse
                {
                    Code = -1,
                    Message = "请求参数缺失或格式错误",
                    Success = false
                });
            }

            // 模拟业务逻辑:验证箱码是否有效
            var validBoxes = new HashSet<string>
            {
                "FERT-MB02H0M010004R84000002",
                "FERT-MB02H0M010004R84000003"
            };

            foreach (var box in request.BoxesList)
            {
                if (!validBoxes.Contains(box))
                {
                    return NotFound(new OpenProductReportResponse
                    {
                        Code = -1,
                        Message = "未查询到箱码信息!",
                        Success = false
                    });
                }
            }

            // 全部有效,返回成功
            return Ok(new OpenProductReportResponse
            {
                Code = 0,
                Message = "",
                Result = true,
                Success = true
            });
        }
    }
}

第四步:创建测试客户端

1.需要修改 Program.cs 文件,添加客户端测试功能。替换掉原来的 Program.cs 内容:

cs 复制代码
using AGVProductReportServer.Models;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;

// 强制指定服务器运行在 HTTP 5000 端口
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseUrls("http://localhost:5000");

// 添加服务到容器
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// 配置 HTTP 请求管道
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseAuthorization();
app.MapControllers();

Console.WriteLine("服务器启动,监听地址: http://localhost:5000");
Console.WriteLine("等待客户端连接...");
await app.RunAsync();

第五步:修改 Properties/launchSettings.json 文件

javascript 复制代码
{
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": false,
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
相关推荐
lingxiao1688817 小时前
WebApi详解+Unity注入--中篇:.net core的WebAPI
unity·c#·.netcore
ServBay17 小时前
C# 成为 2025 年的编程语言,7个C#技巧助力开发效率
后端·c#·.net
m0_7381207217 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh
GHL28427109018 小时前
无法连接服务端socket
linux·服务器·网络
kylezhao201918 小时前
S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
运维·服务器
阿华hhh18 小时前
项目(购物商城)
linux·服务器·c语言·c++
摸鱼仙人~18 小时前
大模型文章生成的风格个性化与多文体写作:一套可落地的方法论
linux·运维·服务器
爬山算法19 小时前
Hibernate(30)Hibernate的Named Query是什么?
服务器·前端·hibernate
AC赳赳老秦19 小时前
Shell 脚本批量生成:DeepSeek 辅助编写服务器运维自动化指令
运维·服务器·前端·vue.js·数据分析·自动化·deepseek
学Linux的语莫19 小时前
linux的root目录缓存清理
linux·运维·服务器