일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 아펠가모선릉
- db index
- Srping AOP
- kotiln
- sprintboot
- 아펠가모
- 코프링
- 스프링 AOP
- 마드리드
- kopring
- git명령어
- HTTP
- HTTP #웹기술
- c# scv
- b-tree index
- 세비야
- Kotlin
- 관심지향프로그래밍
- elk
- 그라나다
- http상태코드
- 스페인 준비물
- 코틀린
- 본식후기
- 스페인
- 코틀린 함수
- 400에러
- 아펠가모 선릉
- @Component
- 바르셀로나
- Today
- Total
끄적이는 메모장
[.NET Core 2.x] REST API + MySQL 본문
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 |