C# WebAPI

Install-Package Swashbuckle.AspNetCore

 

namespace WebApplication1.Models
{
    public class Book
    {
        public int Id { get; set; }
        public string Name { get; set;  }
        public string ISBN { get; set;  }
        public string Author { get; set;  }
        public string Abstract {  get; set; }
        public string Comment { get; set;  }
        public string Content { get; set; }
        public string Summary { get; set;  }
        public string Title { get; set;  }
        public string Topic { get; set;  }
    }
}


using WebApplication1.Models;

namespace WebApplication1.Services
{
    public class BookService
    {
        static int Idx = 0;
        private int GetIdx()
        {
            return Interlocked.Increment(ref Idx);
        }

        public List<Book> GetBooksList()
        {
            List<Book> booksList=new List<Book>();
            for(int i=0;i<1000;i++)
            {
                var idx=GetIdx();
                var bk = new Book()
                {
                    Id=idx,
                    Name=$"Name_{idx}",
                    ISBN=$"ISBN_{idx}_{Guid.NewGuid():N}",
                    Author=$"Author_{idx}",
                    Abstract=$"Abstract_{idx}",
                    Comment=$"Comment_{idx}",
                    Content=$"Content_{idx}",
                    Summary=$"Summary_{idx}",
                    Title=$"Title_{idx}",
                    Topic=$"Topic_{idx}"
                };
                booksList.Add(bk);
            }
            return booksList;
        }
    }
}



using Microsoft.AspNetCore.Mvc;
using WebApplication1.Models;
using WebApplication1.Services;

namespace WebApplication1.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class BookController : Controller
    {
        private readonly BookService bkService;

        public BookController(BookService bkServiceValue)
        {
            bkService = bkServiceValue;
        }

        [HttpGet]
        [ProducesResponseType(StatusCodes.Status200OK)]
        public ActionResult<List<Book>> GetBooks()
        {
            var books = bkService.GetBooksList();
            return Ok(books);
        }

        [HttpGet("{id}")]
        [ProducesResponseType(StatusCodes.Status200OK)]
        [ProducesResponseType(StatusCodes.Status404NotFound)]
        public ActionResult<Book> GetBookById(int id)
        {
            var books = bkService.GetBooksList();
            var bk=books.FirstOrDefault(x => x.Id == id);

            if(bk==null)
            {
                return NotFound($"Can't find book whose ID is {id}");
            }
            return Ok(bk);
        }
    }
}



using WebApplication1.Services;

namespace WebApplication1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            // Add services to the container.

            builder.Services.AddControllers();
            // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
            builder.Services.AddOpenApi();
            builder.Services.AddSingleton<BookService>();
            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen();

            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (app.Environment.IsDevelopment())
            {
                app.MapOpenApi();
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            app.UseHttpsRedirection();

            app.UseAuthorization();


            app.MapControllers();

            app.Run();
        }
    }
}

 

image

 

 

 

 

https://localhost:7205/api/book/9250

{
  "id": 9250,
  "name": "Name_9250",
  "isbn": "ISBN_9250_3d940005204f46abb2bd3ced7e17b4a8",
  "author": "Author_9250",
  "abstract": "Abstract_9250",
  "comment": "Comment_9250",
  "content": "Content_9250",
  "summary": "Summary_9250",
  "title": "Title_9250",
  "topic": "Topic_9250"
}

 

 

https://localhost:7205/api/book

image

 

 

 

image

 

posted @ 2026-03-15 00:01  FredGrit  阅读(8)  评论(0)    收藏  举报