[Consumes("application/json")] // application/xml // 출력 포멧 정의 public IActionResult Post([FromBody] FiveViewModel model) { try { if (model.Note == null || model.Note.Length < 1) { ModelState.AddModelError("Note", "노트를 입력해야 합니다."); } //모델 유효성 검사 if (!ModelState.IsValid) { return(BadRequest(ModelState)); // 400 에러 출력. } var m = _repository.Add(model); if (DateTime.Now.Second % 2 == 0) //[!] 둘 중 원하는 방식 사용 { // GetById 액션 이름 사용해서 입력된 데이터 반환 //return CreatedAtAction("GetById", new { id = m.Id }, m); // Status: 201 Created return(CreatedAtRoute("GetById", new { id = m.Id }, m)); // Status: 201 Created } else { var uri = Url.Link("GetById", new { id = m.Id }); return(Created(uri, m)); // 201 Created } //return Ok(m); //200 } catch (Exception ex) { return(BadRequest()); } }
[HttpGet("{id:int}", Name = "GetById")] // GetById Web API 이름추가 (post에서 (GetById로) 호출 가능) public IActionResult Get(int id) { ////https://localhost:44367/api/FiveService/1111 ////https://localhost:44367/api/GetById try { FiveViewModel model = _repository.GetById(id); if (model == null) { return(NotFound($"아무런 데이터가 없습니다. ({id}번)")); } return(Ok(model)); } catch (Exception) { return(BadRequest()); } }
[HttpPut("{id:int}")] //HttpPatch=== 부분 업데이트 public IActionResult Put(int id, [FromBody] FiveViewModel model) { if (model == null) { return(BadRequest()); } try { var oldModel = _repository.GetById(id); if (oldModel == null) { return(NotFound($"{id}번 데이터가 없습니다.")); } model.Id = id; _repository.Update(model); //return Ok(model); return(NoContent()); //204 No Content 이미 던져준 정보에 모든 값을 가지고 있어서 ... } catch (Exception) { return(BadRequest("데이터가 업데이트 되지 않았습니다.")); } }