Asp.Net Core: Api Schnittstelle erstellen
Zum Erstellen einer Api Schnittstellen in Asp.Net Core Projekten erstellt man in der dem Controller Verzeichnis einen Unterordner /api
In diesen fügt man dann im Context->Add new Item->Add Scaffold
Einen API Controller-Empty ein
Nach der MVC Nomenklatur benennt man diesen wie den Controller für Webseiten selbst
Hier ProjectsController
Api Controller ->Methode erstellen
Im Controller muss man nun nur eine Standard Methode beschreiben wie Index (Default) und als Ausgabe die Liste in return zuweisen.
Dieses Beispiel erstellt eine Liste mit Projekten
vom Daten-Modell Typ Project
// GET: /api/index public List<ProjectModel> Index() { ///-------------< Index >-------------
//--< Get Linq.Query >-- //*gets last 10 Projects with View_Sum var query = (from n in _dbContext.tbl_Projects where n.IsDraft == false orderby n.IDProject descending select n ).Take(50); //--</ Get Linq.Query >--
//----< fill Data_to_View >---- List<ProjectModel> dataList = query.ToList<ProjectModel>();
//< out > //*output to client return dataList; //</ out > ///-------------</ Index >------------- } |
Test Ausgabe im Browser
Im Browser kann man zum Testen einfach die Standard-Adresse für MVC Projecte eingeben
https://localhost:44390/api/projects
dann werden die Ergebnisse als json Liste ausgegeben
Beispiel HTML-Texte Ausgabe über json api Liste
{"idProject":411,"idOwner":1,"title":"🎬 Fliese mit der Flex schneiden","text":" man kann Fliesen ganz gut mit der Flex schneiden hierzu muss man aber 3 dinge beachten mit einem Holz kann man die Scheibe stabilisieren die Fliese von oben schneiden die Trennscheibe in die richtige Richtung drehen lassen der Schnitt ist meistens leicht schräg die untere Seite ergibt einen sauberen Schnitt die vordere Seite franst leicht aus Deshalb die rückseitige verwenden ","html":" \r\n <div>man kann Fliesen ganz gut mit der Flex schneiden. hierzu muss man aber 3 dinge beachten:</div><div><a href=\"" rel=\"nofollow\" style=\"background-color: rgb(255, 255, 255);\"><iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/R-pkGs_y9Og\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen=\"\"></iframe></a><br></div><div>mit einem Holz kann man die Scheibe stabilisieren</div><div>die Fliese von oben schneiden</div><div>die Trennscheibe in die richtige Richtung drehen lassen</div><div>der Schnitt ist meistens leicht schräg: die untere Seite ergibt einen sauberen Schnitt, die vordere Seite franst leicht aus</div><div><br></div><div>Deshalb die rückseitige verwenden.</div><img src=\"/User_Files/Notes/Images/Image_411_0_blog.jpg\" style=\"width: 100%; max-width: 100%; height: auto; display: inline-block;\"><br><br><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div> \r\n \r\n \r\n ","urlRef":null,"folder":"Bauen;Fliesen;Tipp","dtEdit":"2018-06-10T12:03:07.047","dtCreated":"2018-06-10T11:58:20.15","isDraft":false},{"idProject":410,"idOwner":1,"title":"🎬 Kartoffel als Setzling Unterlage für Pfirsiche","text":" ","html":" \r\n |
Ausgabe Im Chrome Browser
Kompletter Code zur Api-Controller
Datei, Code: Controllers/api/ProjectsController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Freelance.Data; using Freelance.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc;
namespace Freelance.Controllers.api {
[Produces("application/json")] [Route("api/Projects")] public class ProjectsController : Controller { //--------------< Class: Controller >--------------------- #region Controller Init private readonly ApplicationDbContext _dbContext;
public ProjectsController(ApplicationDbContext dbContext) { //----< Init: Controller >---- _dbContext = dbContext; //----</ Init: Controller >---- } #endregion
// GET: /api/index public List<ProjectModel> Index() { ///-------------< Index >-------------
//--< Get Linq.Query >-- //*gets last 10 Projects with View_Sum var query = (from n in _dbContext.tbl_Projects where n.IsDraft == false orderby n.IDProject descending select n ).Take(50); //--</ Get Linq.Query >--
//----< fill Data_to_View >---- List<ProjectModel> dataList = query.ToList<ProjectModel>();
//< out > //*output to client return dataList; //</ out > ///-------------</ Index >------------- }
//--------------</ Class: Controller >--------------------- } } |