Net Core微服务:指定Web应用端口?WebApi?

一、命令行指定Web应用端口(默认:5000)

1、方法一:

(1)、项目 -》  属性

Net Core微服务:指定Web应用端口?WebApi?_第1张图片

(2)、打开项目所在文件夹的bin中

Net Core微服务:指定Web应用端口?WebApi?_第2张图片

(3)、选中地址栏,输入cmd

Net Core微服务:指定Web应用端口?WebApi?_第3张图片

Net Core微服务:指定Web应用端口?WebApi?_第4张图片

 

命令行输入:

set ASPNETCORE_URLS=http://127.0.0.1:8080 ,修改默认地址,端口。

启动api

dotnet WebApplication2.dll

 

Net Core微服务:指定Web应用端口?WebApi?_第5张图片

 

2、方法二:修改程序

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup()
            .UseUrls("http://127.0.0.1:9999");

 然后,命令行启动

 

3、方法三(推荐方法

        public static IWebHostBuilder CreateWebHostBuilder(string[] args)
        {
            var config = new ConfigurationBuilder() //创建ConfigurationBuilder
                .AddCommandLine(args)
                .Build();
            string ip = config["ip"];
            string port = config["port"];

            return WebHost.CreateDefaultBuilder(args)
                   .UseStartup()
                   //.UseUrls("http://"+ip+":"+port);
                 .UseUrls($"http://{ip}:{port}");
        }

命令行启动

dotnet WebApplication2.dll --ip 127.0.0.1 --port 9999

 

二、WebApi

WebApi是Restful风格,请求响应最好是Json格式。

Json格式请求(contenttype=application/json)的方法体:{phoneNum:"110",msg:"信息"}

 

[HttpPost("Send_QQ")] 匹配Action的名字

 

三、示例:

1、创建MsgService的WebApi

(1)EmailController

using System;
using Microsoft.AspNetCore.Mvc;

namespace MsgService.Controllers
{
    /// 
    /// 邮件服务项
    /// 
    [Route("api/[controller]")]
    [ApiController]
    public class EmailController:ControllerBase
    {
        [HttpPost(nameof(Send_QQ))]
        public void Send_QQ(SendEmailRequest model)
        {
            Console.WriteLine($"通过邮件接口向{model.Email}发邮件,标题{model.Title},内容:{model.Boby}");
        }

        [HttpPost(nameof(Send_163))]
        public void Send_163(SendEmailRequest model)
        {
            Console.WriteLine($"通过邮件接口向{model.Email}发邮件,标题{model.Title},内容:{model.Boby}");
        }
    }
    public class SendEmailRequest
    {
        public string Email { get; set; }
        public string Title { get; set; }
        public string Boby { get; set; }
    }
}

(2)SMSController

using System;
using Microsoft.AspNetCore.Mvc;

namespace MsgService.Controllers
{
    /// 
    /// 短信服务项
    /// 
    [Route("api/[controller]")]
    [ApiController]
    public class SMSController:ControllerBase
    {
        [HttpPost(nameof(Send_HW))]
        public void Send_HW(SendSMSRequest model)
        {
            Console.WriteLine($"通过华为短信接口向{model.PhoneNum},发送内容{model.Msg}");
        }
    }

    public class SendSMSRequest
    {
        public string PhoneNum { get; set; }
        public string Msg { get; set; }
    }
}

2、创建ProductService的WebApi

using System.Collections.Generic;
using System.Linq;
using System.Net;
using Microsoft.AspNetCore.Mvc;

namespace ProductService.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ProductController : ControllerBase
    {
        private static List products = new List();
        static ProductController()
        {
            products.Add(new Product { Id = 1, Name = "T10笔记本", Price = 4000, Description = "联想笔记本,I7处理器" });
            products.Add(new Product { Id = 2, Name = "天梭手表", Price = 4000, Description = "瑞士款" });
        }

        /// 
        /// Get请求,返回Json对象(WebApi会帮我们序列化成Json)
        /// 
        /// 
        [HttpGet]
        public IEnumerable Get()
        {
            return products;
        }

        [HttpGet("{id}")]
        public Product Get(int id)
        {
            var product = products.SingleOrDefault(p=>p.Id==id);
            if(product==null)
            {
                Response.StatusCode = 404; //通过状态码告诉出错,404没找到
            }
            return product;
        }

        [HttpPost]
        public void Add(Product model)
        {
            if(products.Any(p=>p.Id==model.Id))//产品是否存在
            {
                Response.StatusCode = (int)HttpStatusCode.Conflict;//通过状态码而非响应体报错,是restful风格
                return;
            }
            products.Add(model);
        }
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
            var product = products.SingleOrDefault(p=>p.Id==id);
            if(product!=null)
            {
                products.Remove(product);
            }
        }
    }

    public class Product
    {
        public long Id { get; set; }
        public string Name { get; set; }
        public double Price { get; set; }
        public string Description { get; set; }
    }
}

3、两个webApi中修改端口

        public static IWebHostBuilder CreateWebHostBuilder(string[] args)
        {
            var config = new ConfigurationBuilder() //创建ConfigurationBuilder
                .AddCommandLine(args)
                .Build();
            string ip = config["ip"];
            string port = config["port"];

            return WebHost.CreateDefaultBuilder(args)
                   .UseStartup()
                 //.UseUrls("http://"+ip+":"+port);
                 .UseUrls($"http://{ip}:{port}");
        }

4、命令启动

5、postMan工具调试

Net Core微服务:指定Web应用端口?WebApi?_第6张图片

 

 

 

 

 

 

Net Core微服务:指定Web应用端口?WebApi?_第7张图片

 

 

 

 

 

 

Net Core微服务:指定Web应用端口?WebApi?_第8张图片

 

 

 

 

 

 

 

Net Core微服务:指定Web应用端口?WebApi?_第9张图片

 

 

 

 

 

 

 

 

 

 

Net Core微服务:指定Web应用端口?WebApi?_第10张图片

你可能感兴趣的:(Net,Core)