¾È³çÇϼ¼¿ä.
¾î¶² ÅؽºÆ®¹Ú½º¿¡ ÀÖ´Â °ªÀÌ À̹Ì
µ¥ÀÌÅͺ£À̽º¿¡ µé¾î ÀÖ´ÂÁö È®ÀÎÇÏ´Â ±â´ÉÀº
ÀϹÝÀûÀ¸·Î Ajax·Î ó¸®Çϴµ¥¿ä.
Angualrµµ º°´Ü ´Ù¸£Áö ¾Ê½À´Ï´Ù.
¾Æ·¡ »ùÇà ÄÚµå´Â Âü°÷ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
´Ù¸¸, Á¦ Angular °ÀÇÀÇ Heroes °ÀǸ¦ ÀÌ¹Ì ¾Ë°í ÀÖ´Ù´Â °¡Á¤ÇÏ°Ô
³ª¿ÇÑ »ùÇà ¼Ò½ºÀÔ´Ï´Ù.
[1] Hero.cs : ¸®Æ÷ÁöÅ丮 Ŭ·¡½º¿¡ ¸Þ¼µå Ãß°¡
///
/// À̸§ È®ÀÎ
///
public Hero GetHeroByName(string name)
{
string query = "Select * From Heroes Where Name = @Name";
return db.Query(query, new { Name = name }).FirstOrDefault();
}
[2] Hero.cs : Web API¿¡ ¾×¼Ç ¸Þ¼µå Ãß°¡
[HttpGet("{name}", Name = "GetHeroByName")] // À̸§ Ãß°¡: Name ¼Ó¼ºÀº ÇÁ·ÎÁ§Æ®¿¡¼ À¯ÀÏÇÑ °ª ÁöÁ¤
[ProducesResponseType(typeof(Hero), 200)]
public IActionResult Get(string name)
{
try
{
var model = _repository.GetHeroByName(name);
if (model == null)
{
return Ok(new Hero());
}
return Ok(model);
}
catch (Exception ex)
{
return BadRequest($"¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù. {ex.Message}");
}
}
[3] heroes.data.service.ts : Angular µ¥ÀÌÅÍ ¼ºñ½º¿¡ ¸Þ¼µå Ãß°¡
// »ó¼¼(cRud)
// GET: GetByName(): ÀÌ¹Ì ÀúÀåµÈ À̸§ÀÎÁö È®ÀÎ
getByName(name: string): Observable {
const url = `${this.API_URI}/${name}`;
return this.http.get(url)
.map((res: Response) => {
let model = res.json();
return model;
})
.do(model => console.log("[heroes.data.service.ts] getByName »ó¼¼ µ¥ÀÌÅÍ Àб⠿Ϸá: " + JSON.stringify(model)))
.catch(this.handleError);
}
[4] heroes.write.component.ts : ÀÔ·Â ÄÄÆ÷³ÍÆ®ÀÇ ÄÚµå ºñÇÏÀε忡 ÇÔ¼ö Ãß°¡
// ÅؽºÆ®¹Ú½º¿¡¼ Æ÷Ä¿½º¸¦ ÀÒ¾úÀ» ¶§
txtName_Blur(name: string) {
this.ds.getByName(this.model.name).subscribe(
(model: IHero) => {
if (model.name != null) {
alert('ÀÌ¹Ì ÀÖ´Â À̸§ÀÔ´Ï´Ù.');
}
}, // ¼º°ø Äݹé
(err) => {
console.log("»ó¼¼ º¸±â ÆäÀÌÁö ¿¡·¯ ¹ß»ý: ");
console.log(err);
}, // ¿¡·¯ Äݹé
() => {
console.log("»ó¼¼ º¸±â ÆäÀÌÁö Àб⠿Ϸá");
} // ÃÖÁ¾ Äݹé
);
}
[5] heroes.write.component.html : ÀÔ·Â Æû¿¡ (blue) Ãß°¡
input type="text"
id="name"
placeholder="Enter Name"
required
minlength="2"
class="form-control"
name="name"
#name="ngModel"
[(ngModel)]="model.name"
(blur)="txtName_Blur()"
À§ ´Ü°è°¡ Àû¿ëµÈ ¼Ò½º´Â ¾Æ·¡ °æ·Î¿¡¼ Å×½ºÆ®Çغ¸½Ç ¼ö ÀÖ½À´Ï´Ù.
http://angular.dul.me/heroes/write
À§ °æ·Î¿¡¼ È«±æµ¿À» ÀÔ·ÂÇϸé À̹ÌÀÖ´Ù´Â Àǹ̷Π°æ°íâÀÌ ¶å´Ï´Ù.
¾ø´Â µ¥ÀÌÅÍ´Â ¾Æ¹«·± °æ°íâÀÌ ¶å´Ï´Ù.
°£´ÜÈ÷ Àüü È帧À» À§ÇÑ ³»¿ëÀ¸·Î ÀýÂ÷¸¸ Ãß°¡ÇÑ »ùÇà ÄÚµåÀÌ´Ï
Âü°íÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
°£¿µ¿ì ´ÔÀÌ ¾²½Å ¿ø¹® ±ÛÀÔ´Ï´Ù.
¿À·£¸¸¿¡ Áú¹®µå¸³´Ï´Ù. ÀßÁö³×½ÃÁÒ?
¹®Àdz»¿ëÀº ÀÌ·¸½À´Ï´Ù.
¿¹¸¦ µé¾î¼ °Å·¡Ã³¸íÀ» ÀÔ·ÂÇßÀ»¶§ ÀÎDz¿¡¼ ¾Æ¿ôÆ÷Ä¿½º°¡ ÀϾ¸é DB¿¡ Á¢¼ÓÇؼ °Å·¡Ã³°¡ ÀÖ´Â ¾ø´ÂÁö È®ÀÎÇؼ ¾Ë·ÁÁÖ°í Àç°í¸¦ ÀÔ·Â ÀÎDz¿¡¼ ¾Æ¿ôÆ÷Ä¿½º°¡ ÀϾ¸é DB¿¡ Á¢¼ÓÇؼ Á¤º¸¸¦ ¾Ë·ÁÁÖ´Â ½ÄÀ¸·Î À¥ÇÁ·Î±×·¥À» ±¸ÇöÇÏ·Á°íÇÕ´Ï´Ù.
ÀÌ·¸°Ô ±¸ÇöÀ» ÇÏ·Á°í º¸´Ï ¹é¿£µåÂÊ¿¡ ¶ó¿ìÆÃÀÌ ³Ê¹« ¸¹¾ÆÁ®¹ö¸®´Âµ¥¿ä ²À 1´ë1·Î ¸ÅĪÇؼ »ç¿ëÀ» ÇؾßÇϴ°ÍÀΰ¡¿ä?
/:path/:id ÀÌ·±½ÄÀ¸·Î ¹é¿£µå¸¦ ±¸¼ºÇصµ °æ·Î¸¦ ÀÚµ¿À¸·Î ÀνÄÇØÁÖ´Â°Í ±îÁö´Â È®ÀÎÀ» Çߴµ¥¿ä..
sql¹®À» ÇÔ¼öÈ ½ÃÄѼ º¸³»·Á°íÇÏ´Ùº¸´Ï Àß ¸ð¸£°Ú½À´Ï´Ù.
html¿¡¼ input¿¡¼ ÀԷµȰªÀ» nameó¸®Çؼ req.body.idó¸®ÇÏ¸é ¾Þ±Ö·¯¿¡¼´Â ¸ø¹Þ°í ¹é¾Øµå·Î °¡¹ö¸®´Â°Í °°Àºµ¥¿ä.. ¾Þ±Ö·¯¿¡¼ ¹Þ¾Æ¼ ¹é¿£µå·Î Àü´ÞÇÒ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾î¶²°ÍÀÌ ÀÖÀ»Áö ±Ã±ÝÇÕ´Ï´Ù.
Àú¿¡°Ô´Â ¸Å¿ì Áß¿äÇÑ ÀÏÀÌ´Ï ¹æ¹ýÀÌ ÀÖ´Ù¸é ´äº¯ ²À ºÎŹµå¸®°Ú½À´Ï´Ù.
|