.Net 코어에서 Api를 만드는 방법
22973 단어 csharpaspnetcoredotnet
달성 목표
이러한 작업을 수행하기 위해 일련의 메서드를 노출해야 하는 가상의 회사가 있습니다.
이러한 Api 메서드를 사용할 외부 애플리케이션에는 다음과 같은 화면이 있습니다.
이 경우에는 4개의 필드가 있는 Product라는 엔터티가 있습니다.
코딩을 시작하기 전에 Api 및 Json 형식에 대한 기본 개념을 새로 고치는 것이 좋습니다.
API는 무엇입니까?
저는 이 개념에 대한 많은 정의를 읽었으며 다음과 같이 마음에 새기고 싶습니다.
Apis is the specification of how one piece of software can interact with another.
이 예제에서는 외부 응용 프로그램과 상호 작용하는 특정 작업을 수행하는 일련의 조각("메서드")을 만들 것입니다.
| 운영 | HTTP 동사 |
| 제품 만들기 | 포스트 |
| 제품 읽기 | 가져오기 |
| 제품 업데이트 | 업데이트 |
| 제품 삭제 | 삭제 |
JSON이란 무엇입니까?
이제 코딩을 시작하겠습니다.
1단계: dotnet 명령 실행
명령줄 창을 열고 리포지토리 폴더로 이동한 후 다음 dotnet 명령을 입력하여 새 Api 프로젝트를 만듭니다.
dotnet new webapi -n crudstore
2단계: 프로젝트 탐색
다음을 입력하여 프로젝트 crudstore 내부로 이동합니다.
cd crudstore
다음을 입력하여 vscode에서 프로젝트를 엽니다.
code .
3단계: 환경 설정
확장 패널을 클릭하고 환경을 준비하고 생산성을 높이는 데 도움이 되는 다양한 도구를 탐색하십시오.
개인적으로 다음을 설치하는 것이 좋습니다.
4단계: 모델 생성
namespace Models
{
public class Product
{
public int Idproduct { get; set; }
public string Name { get; set; }
public string Imageurl { get; set; }
public decimal Price { get; set; }
}
}
5단계: 컨트롤러 만들기
이 예를 설명하기 위해 제품의 정적 컬렉션을 사용하지만 실제 시나리오에서는 분명히 데이터베이스에 연결하기 위해 더 많은 코드를 추가해야 합니다.
static List _products = new List(){
new Product(){ Idproduct =0, Name= "hard disk", Price= 100 },
new Product(){ Idproduct =1, Name= "monitor", Price= 250 },
};
그런 다음 모든 요청을 처리하는 다음 코드를 추가합니다.
헤더에서 일부 네임스페이스를 사용해야 한다는 점에 유의하십시오.
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Models;
[Produces("application/json")]
[ApiController]
[Route("api/products")]
public class productController : Controller
{
static List _products = new List(){
new Product(){ Idproduct =0, Name= "hard disk", Price= 100 },
new Product(){ Idproduct =1, Name= "monitor", Price= 250 },
};
[HttpGet("GetAll")]
public IActionResult GetAll()
{
return Ok(_products);
}
[HttpPost]
public IActionResult Post([FromBody] Product product)
{
_products.Add(product);
return StatusCode(StatusCodes.Status201Created);
}
[HttpPut]
public IActionResult Put([FromBody] Product product)
{
var entity = _products.Where(x => x.Idproduct == product.Idproduct).FirstOrDefault();
entity.Name = product.Name;
entity.Price = product.Price;
entity.Imageurl = product.Imageurl;
return StatusCode(StatusCodes.Status200OK);
}
[HttpDelete]
public IActionResult Delete([FromBody] Product product)
{
var entity = _products.Where(x => x.Idproduct == product.Idproduct).FirstOrDefault();
_products.Remove(entity);
return StatusCode(StatusCodes.Status200OK);
}
}
6단계: 프로젝트에 Swagger 추가
Swagger는 Api의 모든 메서드를 문서화하고 설명하는 데 매우 유용한 너겟입니다.
명령줄과 프로젝트 내부에서 다음 명령을 입력합니다.
dotnet add package Swashbuckle.AspNetCore
결과적으로 다음과 같은 메시지가 표시됩니다.
프로젝트의 startup.cs 클래스로 이동하여 해당 swagger를 적절하게 구성할 수 있도록 일부 변경합니다.
Configureservices 메서드에서 다음 코드를 추가합니다.
services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen();
그런 다음 Startup 클래스의 Configure 메서드로 이동하여 다음 코드를 추가합니다.
// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
마지막으로 Startup 클래스는 다음과 같아야 합니다.
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
7단계: API 테스트
명령줄 창에 다음 명령을 입력합니다.
dotnet run
8단계: 결과 확인
브라우저를 열고 URLhttps://localhost:5001/swagger/index.html을 입력하면 이전에 생성한 메서드 집합이 표시됩니다.
메서드 GetAll
URL: https://localhost:5001/api/products/GetAll
[
{
"idproduct": 0,
"name": "hard disk",
"imageurl": null,
"price": 100
},
{
"idproduct": 1,
"name": "monitor",
"imageurl": null,
"price": 250
}
]
방법 포스트
URL: https://localhost:5001/api/products
{
"idproduct": 0,
"name": "watch",
"imageurl": "http://url",
"price": 150
}
API를 테스트하기 위해 Swagger가 제공하는 모든 기능을 탐색할 수 있으므로 Postman 및 Fiddler과 같은 다른 흥미로운 대안을 통해 API를 테스트할 수 있습니다.
이 코드를 즐기시기 바랍니다!
Download this code for Github
그게 다야! 의심스러운 점이 있으면 주저하지 말고 의견을 남기거나 를 통해 저에게 질문하십시오.
Reference
이 문제에 관하여(.Net 코어에서 Api를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ricardojvtorres/how-to-create-api-in-net-core-1cmi텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)