명령줄을 통해 Mac에서 ASP.NET Core 6.0용 OData
12006 단어 dotnetcsharpprogrammingodata
.NET 6.0에 Program.cs의 새로운 구조가 포함되어 있고 거기에서 몇 가지 문제에 직면했기 때문에 명령줄을 통해 OData 지원을 추가한 방법을 문서화하고 싶습니다.
내가 수행한 단계는 다음과 같습니다.
ASP.NET Core 웹 API 6.0 애플리케이션 만들기
>> dotnet new webapi -o odata
>> cd odata
Entity Framework Core 및 OData 패키지 참조 추가
단순성을 위해 EF Core 메모리 내 데이터베이스 공급자를 사용했습니다.
>> dotnet add package Microsoft.EntityFrameworkCore.InMemory
>> dotnet add package Microsoft.AspNetCore.Odata
Program.cs 업데이트
using Microsoft.AspNetCore.OData;
using Microsoft.EntityFrameworkCore;
using Microsoft.OData.Edm;
using Microsoft.OData.ModelBuilder;
using OData.Models;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
// Entity Framework Context
builder.Services.AddDbContext<ODataContext>(opt => opt.UseInMemoryDatabase("Cars"));
// OData convention model and OData controller
builder.Services.AddControllers().AddOData(opt => opt.AddRouteComponents("odata", GetEdmModel()).Filter().Select());
var app = builder.Build();
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
IEdmModel GetEdmModel()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Car>("Cars");
return builder.GetEdmModel();
}
GET 요청에 대한 지원 추가
EnableQuery
주석을 사용하여 GET 요청CarsController.cs
을 활성화합니다. 정적 클래스DataSource
를 사용하여 테스트 데이터를 제공합니다. DataSource.GetCars()
에 대한 코드는 here에서 찾을 수 있습니다.using Microsoft.AspNetCore.OData.Routing.Controllers;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.OData.Query;
using OData.Models;
using OData.Data;
namespace OData.Controllers
{
public class CarsController : ODataController
{
private ODataContext _context;
private readonly ILogger<CarsController> _logger;
public CarsController(ODataContext context, ILogger<CarsController> logger) {
_context = context;
_logger = logger;
if (_context.Cars.Count() == 0)
{
foreach (var b in DataSource.GetCars())
{
_context.Cars.Add(b);
}
_context.SaveChanges();
}
}
[EnableQuery]
public IActionResult Get()
{
return Ok(_context.Cars);
}
[EnableQuery]
public IActionResult Get(int key)
{
return Ok(_context.Cars.FirstOrDefault(c => c.Id == key));
}
}
}
응용 프로그램을 실행하고 결과를 확인하십시오
OData가 작동함을 증명하는 좋은 방법은 가격이 50 이하인 모든 자동차를 쿼리하는 것입니다. 해당 조건을 충족하는 자동차는 한 대뿐입니다.
>> dotnet run
>> curl -X 'GET' 'https://localhost:7005/odata/Cars?$filter=Price le 50' -H 'accept: text/plain' -k
응답은 다음과 같아야 합니다.
{
"@odata.context": "https://localhost:7005/odata/$metadata#Cars",
"value": [
{
"Id": 2,
"Brand": "BMW",
"Price": 49.99,
"Model": "3 Series"
}
]
}
요약
이 예제에서는 ASP.NET Core Web API 애플리케이션에 OData에 대한 지원을 추가하는 방법을 살펴보고 간단한 쿼리를 수행하여 OData 요청이 전달되고 있음을 증명했습니다. 이것이 프로젝트 실행에 도움이 되었기를 바랍니다.
연결
Reference
이 문제에 관하여(명령줄을 통해 Mac에서 ASP.NET Core 6.0용 OData), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kondrashov/odata-for-aspnet-core-60-on-mac-via-command-line-55ei텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)