有時候在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);
}
