如何创建一个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"
      }
    }
  }
}
相关推荐
czhc11400756631 小时前
同值短路与单一真值源:属性不是命令,状态只有一个家
c#
浩浩测试一下4 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy5 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
Escalating_xu5 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
发量惊人的中年网工5 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留6 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
翼龙云_cloud6 小时前
亚马逊云服务器服务代理商:Bedrock 实践经验 Serverless 架构下的 AI 自动化落地
服务器·架构·serverless·云计算·aws
忆挽篱笙歌6 小时前
环境变量,本地变量
linux·运维·服务器
张宇Joaquin9 小时前
AMD uProf 工具采集微架构特征使用介绍
服务器
老李IT笔记9 小时前
连不上不一定是网不好:新系统不认的服务端配置卡在哪一档
运维·服务器·网络