끄적이는 메모장

[.NET Core 2.x] REST API + MySQL 본문

C, C++, C#/C# ASP.NET

[.NET Core 2.x] REST API + MySQL

밥보92 2018. 4. 5. 14:36
반응형

MySQL을 연동 후 GET/POST/PUT/DELETE Http Mehtod를 이용해보기

-> 각 개념은 다음 글 참고 (http://happynotepad.tistory.com/6?category=784579)

 

MySQL 연동, Context 및 Model class setting은 다음 글 참고

-> http://happynotepad.tistory.com/8?category=784579

 

Http Call을 정의하기 위한 Controller 생성

 testController.cs

[Route("api/[controller]")]
public class IsOpenController : Controller
{
  private readonly IsOpenContext _isOpenContext;

  public IsOpenController(IsOpenContext isOpenContext)
  {
    _isOpenContext = isOpenContext;
  }

// GET api/values
[HttpGet]
public IEnumerable<OpenResponse> GetAll()
{
  return _isOpenContext.OpenResponse.ToList();
}

[HttpGet("{id}")]
public OpenResponse GetById(int id)
{
  var item = _isOpenContext.OpenResponse.FirstOrDefault(o => o.id == id);
  if (item == null)
  {
    return null;
  }
  return item;
}

[HttpPost]
public IEnumerable<OpenResponse> AddItem([FromBody] OpenResponse item)
{
  if (item == null)
  {
    return _isOpenContext.OpenResponse.ToList();
  }

  _isOpenContext.OpenResponse.Add(item);
  _isOpenContext.SaveChanges();

  return _isOpenContext.OpenResponse.ToList();
}

[HttpPut("{id}")]
public OpenResponse UpdateItemByid(int id, [FromBody] OpenResponse item)
{
  if (item == null)
  {
    return null;
  }

  var updatedItem = _isOpenContext.OpenResponse.FirstOrDefault(o => o.id == id);
  if (updatedItem == null)
  {
    return null;
  }
  updatedItem.id = item.id;
  updatedItem.isOpened = item.isOpened;
  _isOpenContext.OpenResponse.Update(updatedItem);
  _isOpenContext.SaveChanges();

  return updatedItem;
}

[HttpDelete("{id}")]
public IEnumerable<OpenResponse> DeleteItemById(int id)
{
  var item = _isOpenContext.OpenResponse.FirstOrDefault(o => o.id == id);
  if (item == null)
  {
    return _isOpenContext.OpenResponse.ToList();
  }

  _isOpenContext.OpenResponse.Remove(item);
  _isOpenContext.SaveChanges();
  return _isOpenContext.OpenResponse.ToList();
  }
}

 

- C# 라이브러리의 Cotroller class를 상속받아 사용

- 객체 생성 시 context 인자를 받아옴

- context class 내에 선언 되어있는 Dbset을 통해 DB와 데이터를 주고 받음

 

[Enumerable.FirstOrDefault]

- Enumerable 내에서 조건에 맞는 첫 번재 요소를 반환 한다.

 

[Enumerable.Add]

- Enumerable 내에 Item을 추가 해 준다.

 

[DbContext.SaveChanges]

- 현재 context에서 변화된 것을 DB에 모두 저장한다.


[Enumerable.Update]

- Enumerable 내에 변화된 Item을 업데이트 해준다.

 

[Enumerable.Remove]

- Enumerable 내에서 해당 item을 삭제해준다.

 

[Route("api/[controller]")

- Api의 URL을 정의하고 있다.

- [controller]의 경우 controller class의 앞 부분?에 해당한다.

( testController class 라면 test에 해당)

- ex) http://localhost/api/test/

- Route를 수정하여 커스텀하게 URL을 정의 할 수 있다.

 

[실행 및 확인해보기]

- F5를 눌러 실행

- 각 Method에 대하여 확인해보기

ex)

- 실제 DB에 변화가 있는지 DB 확인 해보기

반응형

'C, C++, C# > C# ASP.NET' 카테고리의 다른 글

[.NET Core 2.x] RabbitMQ 연동  (0) 2018.04.06
[.NET Core 2.x] NoSQL (Couchbase) 연동  (0) 2018.04.05
[.NET Core 2.x] VS Code + MySQL  (0) 2018.04.04
[.NET Core 2.x] Visual Studio Code  (0) 2018.04.04
.NET Core 1.0 vs .NET Core 2.0  (0) 2018.04.04