ASP.NET Core MVCにおけるWeb APIの構築

3661 ワード

ASP.NET CORE MVCでは,Web APIはその1つの機能サブセットであり,MVCの特性やルーティングなどの機能を直接利用することができる.
ASPの構築に成功する.NET CORE MVCプロジェクトの後、解決策を選択し、先にAPIのフォルダを記入し、記入した後、APIフォルダを選択し、
新しいアイテムを選択し、Web APIコントローラを追加するには、コントローラが名前を付けるときにControllerで終わることに注意してください.これは変更できません.前の勝手、例えば、ここではNoteControllerです.csを例に
入力後、NoteControllerを開きます.cs、システムはすでにいくつかの基礎的な機能を構築してくれて、私たちはその基礎の上でいくつかの個性的な修正を行って私たち自身のコードになる必要があります.
 
        private INoteRespository _noteRespository;                        //  note (     ,          )


        private INoteTypeRepository _noteTypeRepository;                  //  notetype (     ,          )

        public NoteController(INoteRespository noteRespository, INoteTypeRepository noteTypeRepository)  //       
        {
            this._noteRespository = noteRespository;
            this._noteTypeRepository = noteTypeRepository;
        }

        // GET: api/note
        [HttpGet]
        public IActionResult Get(int pageindex=1)                                     //    
        {
            var pagesize = 10;
            var notes = _noteRespository.PageList(pageindex, pagesize);
            ViewBag.PageCount = notes.Item2;
            ViewBag.PageIndex = pageindex;
            var result = notes.Item1.Select(r => new NoteViewModel
            {
                Id = r.Id,
                Tile = string.IsNullOrEmpty(r.Password)?r.Tile:"    ",
                Content = string.IsNullOrEmpty(r.Password)?r.Content:"",
                Attachment = string.IsNullOrEmpty(r.Password)?r.Attachment:"",
                Type = r.Type.Name
            });
            return Ok(result);
        }

        // GET api/nite/5
        [HttpGet("{id}")]
        public async Task Detail(int id,string password)
        {
            var note = await _noteRespository.GetByIdAsync(id);
            if (note == null)
            {
                return NotFound();
            }
            if (!string.IsNullOrEmpty(password) && !note.Password.Equals(password))
                return Unauthorized();
            var result=new NoteViewModel()
            {
                Id = note.Id,
                Tile = note.Tile,
                Content = note.Content,
                Attachment = note.Attachment,
                Type = note.Type.Name
            };
            return Ok(result);
        }

        // POST api/note
        [HttpPost]
        public async Task Post([FromBody]NoteModel model)
        {
            if (!ModelState.IsValid)
                return BadRequest(ModelState);
            string filename = string.Empty;
            await _noteRespository.AddAsync(new Note()
            {
                Tile = model.Tile,
                Content = model.Content,
                Create = DateTime.Now,
                TypeId = model.Type,
                Password = model.Password,
                Attachment =filename
            });
            return CreatedAtAction("Index", "");
        }

プログラム、アクセスアドレスhttp://127.0.0.1:port/api/notenoteの情報を取得できますもちろんアドレスにもアクセスできますhttp://127.0.0.1:port/api/note?pageindex=2は、2ページ目の情報を取得することを示す.
詳しくないところは、ブログの下に伝言を残したり、私の個人サイト52 dotnetにアクセスしたりしてください.トップは私に連絡します.