#

ASP.Net: Web Api hinzufügen

 

Wenn man eine externe Schnittstelle von Geräten zu einer Web-Anwendung benötigt, dann fügt man einen API Controller der Webanwendung hinzu, über welchen dann Geräte wie Handys, IoT-Devices, WPF-Desktop Anwendungen und weitere Apps direkt Daten austauschen können.

Am einfachsten verwendet man zum Erstellen von Web API Schnittstellen die ASP.Net Vorlage:

API Controller with actions using Entity Framework

 

Stichworte:

Rest Restful Schnittstelle

 

Unter dem Ordner /Controller erstellt man einen Unterordner mit /Controller/Api.

Dann über das Kontext-Menü: Add Scaffold Item

Und hier die Auswahl: API Controller wit actions using Entity Framework

An API controller with REST actions to create, read, update, delete and list entities from an Entity Framework data context. (by Microsoft v1.0.0.0)

 

Im Dialog: Add API Controller with actions using Entity Framework

Wählt man bei Model Class die Daten-Klasse oder Tabelle ein, welche man extern zugänglich machen möchte. Hier die Model Class: Projects (Freiberufler.Models)

Unter Data context class: trägt man die Datenbank Context schnittstelle ein. Hier app_Database_Context (Freiberufler)

 

 

Ergebnis:

 

Dadurch wird automatisch die API Schnittstelle erstellt mit allen 4 wesentlichen Grundzugriffen

// GET: api/Projects Gettbl_Projects()

 

// GET: api/Projects/5 GetProject([FromRoute] int id)

 

// PUT: api/Projects/5 PutProject([FromRoute] int id, [FromBody] Project project)

 

// POST: api/Projects PostProject([FromBody] Project project)

 

// DELETE: api/Projects/5 DeleteProject([FromRoute] int id)

 

 

 

 

Code als WebApi für die Tabelle Projects

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

using Microsoft.AspNetCore.Http;

using Microsoft.AspNetCore.Mvc;

using Microsoft.EntityFrameworkCore;

using Freiberufler;

using Freiberufler.Models;

 

namespace Freiberufler.Controllers.Api

{

    [Produces("application/json")]

    [Route("api/Projects")]

    public class ProjectsController : Controller

    {

        private readonly app_Database_Context _context;

 

        public ProjectsController(app_Database_Context context)

        {

            _context = context;

        }

 

        // GET: api/Projects

        [HttpGet]

        public IEnumerable<Project> Gettbl_Projects()

        {

            return _context.tbl_Projects;

        }

 

        // GET: api/Projects/5

        [HttpGet("{id}")]

        public async Task<IActionResult> GetProject([FromRoute] int id)

        {

            if (!ModelState.IsValid)

            {

                return BadRequest(ModelState);

            }

 

            var project = await _context.tbl_Projects.SingleOrDefaultAsync(m => m.ID_Project == id);

 

            if (project == null)

            {

                return NotFound();

            }

 

            return Ok(project);

        }

 

        // PUT: api/Projects/5

        [HttpPut("{id}")]

        public async Task<IActionResult> PutProject([FromRoute] int id, [FromBody] Project project)

        {

            if (!ModelState.IsValid)

            {

                return BadRequest(ModelState);

            }

 

            if (id != project.ID_Project)

            {

                return BadRequest();

            }

 

            _context.Entry(project).State = EntityState.Modified;

 

            try

            {

                await _context.SaveChangesAsync();

            }

            catch (DbUpdateConcurrencyException)

            {

                if (!ProjectExists(id))

                {

                    return NotFound();

                }

                else

                {

                    throw;

                }

            }

 

            return NoContent();

        }

 

        // POST: api/Projects

        [HttpPost]

        public async Task<IActionResult> PostProject([FromBody] Project project)

        {

            if (!ModelState.IsValid)

            {

                return BadRequest(ModelState);

            }

 

            _context.tbl_Projects.Add(project);

            await _context.SaveChangesAsync();

 

            return CreatedAtAction("GetProject", new { id = project.ID_Project }, project);

        }

 

        // DELETE: api/Projects/5

        [HttpDelete("{id}")]

        public async Task<IActionResult> DeleteProject([FromRoute] int id)

        {

            if (!ModelState.IsValid)

            {

                return BadRequest(ModelState);

            }

 

            var project = await _context.tbl_Projects.SingleOrDefaultAsync(m => m.ID_Project == id);

            if (project == null)

            {

                return NotFound();

            }

 

            _context.tbl_Projects.Remove(project);

            await _context.SaveChangesAsync();

 

            return Ok(project);

        }

 

        private bool ProjectExists(int id)

        {

            return _context.tbl_Projects.Any(e => e.ID_Project == id);

        }

    }

}

 

Mobile

.

123movies