Creando un API en Net Core 5 - Mi 베이스 페인트 API

16975 단어 csharpapidotnetrest
이것은 아주 좋은 예다.Durante este arte alticalo vamos는 새로운 입문급 API와 도구로 예술 발전의 앞날에 예술을 실현하는 데 도움을 줄 수 있다.

Pueden clonarse el proyecto desde github.


Creando nuestro 페인트 항목


Visual Studio에서는 새 프로젝트의 운영을 단순화하고 프로젝트 웹 API 및 지침을 사용할 수 있습니다.새로운 프로젝트를 토대로 네트워크 핵심이 통합된 템플릿을 구축하고 네트워크 핵심 버전을 선택하여 시스템에 새 구성 요소를 설치할 수 있도록 한다(네트워크 핵심 5 권장).
유엔 편집 como VS Code para programar 이야기 중, debemos seguir estos pasos para crear la estructura del proyecto
// creamos la carpeta de la solución
$> mkdir MyFirstNetCoreWebAPI

// creamos el archivo de solución
$> dotnet new sln --name MyFirstNetCoreWebAPI

// creamos la carpeta de código
$> mkdir src
$> cd src

// creamos el proyecto de web api
$> dotnet new webapi --name MyFirstNetCoreWebAPI.WebAPI

// agregamos el proyecto a la solución
$> cd ..
$> dotnet sln .\MyFirstNetCoreWebAPI.sln add .\src\MyFirstNetCoreWebAPI.WebAPI\MyFirstNetCoreWebAPI.WebAPI.csproj
이것은 아주 좋은 해결 방안입니다. 이것은 실용적인 해결 방안입니다. 인터넷에서 통용되는 네트워크를 구축하고 필요한 요소를 제공할 수 있습니다. (mas allá de los plugins de VS Code)
$> dotnet tool install -g dotnet-aspnet-codegenerator

## Agregamos el paquete al proyecto
$> dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
사업 소재지의 시냇물 중 하나는 공용사업이다.
이것은 두 개의 과정으로 구성된 프로젝트이다. WeatherForecast.csyWeatherForecastController.cs.이것은 템플릿입니다. 참고 문서로 실용적 가치가 없습니다.
이 건물의 기초는 무엇입니까

차세대 네트워킹 핵심 기술의 핵심은 다음과 같습니다.
  • Program.cs:ejecutarel 웹api
  • Startup.cs: 응용 프로그램의 설계 원칙을 실현한다. 서비스 설정/app/web-como-por-ejemplo-la-configuración de-seguridad, 로그 기록, 오픈 API/Swagger, 독립전기(IOC) 등
  • appsettings.json: 외부 프로파일 및 환경 변수
  • Controllers: 이것은 카펫입니다. 위에'우리스/API 종점'이라고 쓰여 있는 사진입니다.
  • Nuestro primer recurso


    기존 공용사업회사usuarios의 신입사원, 특히 신입사원의 고문.
    이것은 기본적인 실현 과정으로, 그것은 통제자 UsersController, 해양 통제자 (código Generator de código) 이다.
    $> dotnet aspnet-codegenerator controller -api -async -name UsersController -outDir Controllers
    
    웹 API의 기본 아키텍처를 탐색하기 위한 Si ahora vemos el 파일 시스템Controller.
    Dentro del controller comenzamos a agregar la lógica necesaria.
    우사리오스토도 호텔
    [HttpGet()]
    public ActionResult<List<UserDto>> GetAllUsers() 
        => Ok(_userRepository
            .GetAll()
            .Select(x => UserDto.FromModel(x)).ToList());
    
    특히 통상적으로
    [HttpGet("{name}")]
    public ActionResult<UserDto> GetUser(string name)
    {
        var user = _userRepository.Get(name);
        if (user == null)
            return Problem(
                "User not found",
                HttpContext.Request.Path,
                StatusCodes.Status404NotFound,
                "Bad parameters");
    
        return Ok(UserDto.FromModel(user));
    }
    
    뉴 우사리오 호텔
    [HttpPost()]
    public ActionResult<UserDto> AddUser([FromBody] UserDto newUserToCreate)
    {
        if (string.IsNullOrEmpty(newUserToCreate.Name))
            return BadRequest(new ProblemDetails()
            {
                Title = "Bad parameters",
                Detail = "The name of the new user cannot be empty or null",
                Instance = HttpContext.Request.Path
            });
    
        var userAlreadyExists = _userRepository.Exists(newUserToCreate.Name);
        if (userAlreadyExists)
            return Conflict(new ProblemDetails()
            {
                Detail = "User already exists",
                Title = "Bad parameters",
                Instance = HttpContext.Request.Path
            });
    
        var newUser = new User(newUserToCreate.Name);
    
        _userRepository.Add(newUser);
    
        return Created($"/users/{newUserToCreate.Name}", UserDto.FromModel(newUser));
    }
    
    간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다 간단하다

  • URI de recurso:el recurso usuario tiene su URI de accesohttp://domain.com/api/users.에스토 로 프로비 엘 아트리바트[Route("api/[controller]")]는 클레스 아카데미 학생이다.

  • HTTP 동사: cada acción sobre el recurso estáasociado al verbo HTTP correcto.공용사업 영사관 직원들은 크레시옹 우체국에서 일했다.

  • 보안: 2차 검사 필요 없음

  • Idempotencia:Los Get siempre devuelven la mism información ante múltiples peticiones iguales.

  • Códigos de respuesta: 실용성 교정, 200개의 요청 만족, 201개의 요청 만족, 404개의 요청 불만족, 400개의 요청 해결 문제.

  • 개방형 API: el scaffold del template ya viene con la implementación básica de OpenAPI/Swagger por loque la documentación est ación est ádisponsible al-ejecutar la aplicación.
  • 클라스 복합체의 물
    [Route("api/[controller]")]
    [ApiController]
    public class UsersController : ControllerBase
    {
        private readonly IUserRepository _userRepository;
    
        public UsersController(IUserRepository userRepository)
        {
            _userRepository = userRepository;
        }
    
        [HttpGet()]
        public ActionResult<List<UserDto>> GetAllUsers() 
            => Ok(_userRepository
                .GetAll()
                .Select(x => UserDto.FromModel(x)).ToList());
    
        [HttpGet("{name}")]
        public ActionResult<UserDto> GetUser(string name)
        {
            var user = _userRepository.Get(name);
            if (user == null)
                return Problem(
                    "User not found",
                    HttpContext.Request.Path,
                    StatusCodes.Status404NotFound,
                    "Bad parameters");
    
            return Ok(UserDto.FromModel(user));
        }
    
        [HttpPost()]
        public ActionResult<UserDto> AddUser([FromBody] UserDto newUserToCreate)
        {
            if (string.IsNullOrEmpty(newUserToCreate.Name))
                return BadRequest(new ProblemDetails()
                {
                    Title = "Bad parameters",
                    Detail = "The name of the new user cannot be empty or null",
                    Instance = HttpContext.Request.Path
                });
    
            var userAlreadyExists = _userRepository.Exists(newUserToCreate.Name);
            if (userAlreadyExists)
                return Conflict(new ProblemDetails()
                {
                    Detail = "User already exists",
                    Title = "Bad parameters",
                    Instance = HttpContext.Request.Path
                });
    
            var newUser = new User(newUserToCreate.Name);
    
            _userRepository.Add(newUser);
    
            return Created($"/users/{newUserToCreate.Name}", UserDto.FromModel(newUser));
        }
    }
    

    문제의 세부 사항


    이것은 estándarde수력발전소ProblemDetails`에 관한 프로젝트로 이 프로젝트는 발전소의 생산 오류에 대한 통지이다.
    이것은 사람을 고무시키는 순간이자 국제 군복의 원칙적인 순간이다.
    HTTP API에서 estándar es como 정보를 정의하고 3xx, 4xx 및 5xx에서 오류 데이터를 사용할 수 있습니다.
    제어할 필요가 없는 상황에서 네트워크 핵심을 제어할 필요가 없고, 네트워크 핵심을 제어할 필요가 없고, 네트워크 핵심을 제어할 필요가 없고, 네트워크 핵심을 제어할 필요가 없다.
    Ejempo delController, vemos que hay 2 maneras de implementarlo, una es llamando al métodoProblems와 el 2do es llamado al método del HTTP Status que queremos returnar와 pas ándole como para metro una instancea de laclaseProblemDetails.Ambos métodos son igualmente válidos.
    Del código también se desprende que no devovervemos directment el objeto User sino que lo mapeamos a una claseUserDto.이것은 국가 실체 인프라 시설에 관한 일반적인 문제다.만약 중국의 권력 하방자가 국가 전단의 소유자라면 중국의 권력 하방자는 명확한 목표가 없고 중앙정부와 고객과의 일치된 요구가 없다.
    축하드립니다!!!🎉🎉
    이것은 새로운 페인트의 일종이다.새 API입니다.
    Github년의 역사가 없다. 특히 이탈리아 프리미어리그의 프로시모스 인터내셔널 페스티벌에는 새로운 알고리즘이 없다.

    좋은 웹페이지 즐겨찾기