有時候在api執行完一個方法后,我們還得再跳到另外一個方法執行其他操作。
這種情況下,我們可以調用方法,也可以根據情況進行重定向作業
private void button2_Click(object sender, EventArgs e) { HttpWebRequest request=(HttpWebRequest) WebRequest.Create("http://localhost:20137/api/Demo?Name=張三&Gender=M&age=22"); request.Method = "GET"; //通過URL傳值的話,可以不指定 contentType //request.ContentType = "text/html;charset=utf-8"; //request.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string result = reader.ReadToEnd(); this.textBox1.Text = result; } } }
第一種 Redirect
public IHttpActionResult Get([FromUri]Person person) { return Redirect("http://localhost:20137/api/Demo/TestRedirect?name=張三");// 這種可以,不過action返回類型是IHttpActionResult //return Content<Person>(HttpStatusCode.BadRequest,person); } [HttpGet] [Route("api/Demo/TestRedirect")] public IHttpActionResult TestRedirect([FromUri]string name) { return Json("成功跳轉"+ name); }
推薦
[Route("action1")] [HttpGet] public IHttpActionResult Action1() { Console.WriteLine("Action1"); return new RedirectResult(new Uri("http://localhost:3721/api/demo/action2"), this); } [Route("action2")] [HttpGet] public IHttpActionResult Action2() { Console.WriteLine("Action2"); return new RedirectResult(new Uri("http://localhost:3721/api/demo/action3"), this); } [Route("action3")] [HttpGet] public IHttpActionResult Action3() { return new OkResult(this); }
第二種 利用HttpReponseMessage
public HttpResponseMessage Get([FromUri]Person person) { var response = Request.CreateResponse(HttpStatusCode.Moved); response.Headers.Location = new Uri("http://localhost:20137/api/Demo/TestRedirect?name=張三"); response.Content = new ObjectContent(typeof(string), "重定向傳值", new JsonMediaTypeFormatter()); return response;// 這種也可以,不過action 返回類型是 HttpResponseMessage } [HttpGet] [Route("api/Demo/TestRedirect")] public IHttpActionResult TestRedirect([FromUri]string name) { return Json("成功跳轉"+ name); }