Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:csharp:dotnetcore:web_api:egyszeru_rest_api

< Web API

Dotnet Core - Egyszerű REST API

Bevezetés

Egyszerű REST API készítés dotnet használatával, kontroller nélkül.

Telepítéshez Nuget csomagokat használunk:

Projekt készítése

dotnet new webapi -minimal -o app01

Függőség telepítése

dotnet add package Pomelo.EntityFrameworkCore.MySql

Könyvtárszerkezet

app01/
  |-bin
  |-database/
  |  `-create.sql
  |-obj/
  |-Properties/
  |-app01.csproj
  |-app01.sln
  |-appsettings.Development.json
  |-appsettings.json
  |-DataService.cs
  |-Emplyoee.cs
  `-Program.cs

Fejlesztői szerver

dotnet watch run

Adatbázis

database/create.sql
create database if not exists sargabt;
 
use sargabt;
 
create table if not exists employees (
    Id int not null primary key auto_increment,
    Name varchar(50),
    City varchar(50),
    Salary double
);
 
grant all privileges
on sargabt.*
to sargabt@localhost
identified by 'titok';

Kapcsolódás az adatbázishoz

DataService.cs
using Microsoft.EntityFrameworkCore;
 
class DataService : DbContext {
    string str = "Server=localhost; User ID=sargabt; Password=titok; Database=sargabt";
 
    public DbSet<Employee> Employees { get; set; }
 
    protected override void OnConfiguring(DbContextOptionsBuilder ob)
    {
        ob.UseMySql(str, ServerVersion.AutoDetect(str));
    } 
}

Modell

Employee.cs
public class Employee {
    public int Id { get; set; }
    public string Name { get; set; } = "";
    public string City { get; set; } = "";
    public double Salary { get; set; }
 
}

Routing

Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
var db = new DataService();
 
app.MapGet("/employees", () => {
    var emps = db.Employees.ToList();
    return emps;
});
 
app.MapPost("/employees", (Employee emp) => {
    db.Employees.Add(emp);
    db.SaveChanges();
    return Results.Created(@"/employeeitems/{emp.Id}", emp);
});
 
app.MapPut("/employees/{id}", (int id, Employee inputEmp) => {
    var emp = db.Employees.Find(id);
    if (emp is null ) return Results.NotFound();
    emp.Name = inputEmp.Name;
    emp.City = inputEmp.City;
    emp.Salary = inputEmp.Salary;
    db.SaveChanges();
    return Results.NoContent();
});
 
app.MapDelete("/employees/{id}", (int id) => {
    if(db.Employees.Find(id) is Employee emp) {
        db.Employees.Remove(emp);
        db.SaveChanges();
        return Results.NoContent();
    }
    return Results.NoContent();
});
 
app.Run();

Végpontok

Teles végpont példa:

  • localhost:5216/employees
Végpont Metódus Auth Leírás
/employees GET nem Az összes dolgozó lekérése
/employees POST nem Új dolgozó hozzáadása
/employees/{id} PUT nem Dolgozó adatainak frissítése
/employees/{id} DELETE nem Dolgozó törlése

Swagger hozzáadása

dotnet add package Swashbuckle.AspNetCore

Vázlat

Program.cs
var builder = WebApplication.CreateBuilder(args);
 
var services = builder.Services;
services.AddEndpointsApiExplorer();
services.AddSwaggerGen();
 
var app = builder.Build();
 
if (app.Environment.IsDevelopment()) {
    app.UseDeveloperExceptionPage();
}
 
app.UseSwagger();
 
app.MapGet("/msg", () => "működik");
 
app.UseSwaggerUI();
app.Run();

Kód

A „var app = builder.Build(); előtt:

var services = builder.Services;
services.AddEndpointsApiExplorer();
services.AddSwaggerGen();

A „var db = new DataService();” után:

app.UseSwagger();

Az „app.Run();” előtt:

app.UseSwaggerUI();

Teljes kód

Program.cs
var builder = WebApplication.CreateBuilder(args);
 
var services = builder.Services;
services.AddEndpointsApiExplorer();
services.AddSwaggerGen();
 
var app = builder.Build();
var db = new DataService();
 
app.UseSwagger();
 
app.MapGet("/employees", () => {
    var emps = db.Employees.ToList();
    return emps;
});
 
app.MapPost("/employees", (Employee emp) => {
    db.Employees.Add(emp);
    db.SaveChanges();
    return Results.Created(@"/employeeitems/{emp.Id}", emp);
});
 
app.MapPut("/employees/{id}", (int id, Employee inputEmp) => {
    var emp = db.Employees.Find(id);
    if (emp is null ) return Results.NotFound();
    emp.Name = inputEmp.Name;
    emp.City = inputEmp.City;
    emp.Salary = inputEmp.Salary;
    db.SaveChanges();
    return Results.NoContent();
});
 
app.MapDelete("/employees/{id}", (int id) => {
    if(db.Employees.Find(id) is Employee emp) {
        db.Employees.Remove(emp);
        db.SaveChanges();
        return Results.NoContent();
    }
    return Results.NoContent();
});
 
app.UseSwaggerUI();
app.Run();

Források

oktatas/programozas/csharp/dotnetcore/web_api/egyszeru_rest_api.txt · Utolsó módosítás: 2024/01/31 23:58 szerkesztette: admin