[英]Creating input parameters and using java web service function in ASP.NET Web API
我创建了一个具有附加功能的Java Web服务。 我还创建了一个ASP.NET Web API,该API调用Java Web服务并显示结果。 可以说我在http://localhost:8080/addition/9/6
输入了带有Java Web服务功能应添加的输入参数的URL。 我得到的输出数据为{"firstNumber":9,"secondNumber":6,"sum":15}
。 当我运行ASP.NET Web API时,我将被重定向到http://localhost:55223/
并且我将获得输出数据,例如{"firstNumber":9,"secondNumber":6,"sum":15}
。
现在,我想做的是,当我运行ASP.NET Web API时,我应该能够在ASP.NET Web API的URL中输入参数( http://localhost:55223/addition/9/6
),而不是直接显示Java Web服务的结果,我想在我的API中使用Java Web服务的功能来计算输入参数的总和。 有谁知道我该怎么做吗? 我应该在代码中进行哪些更改?
这是我的代码:
ASP.NET Web API代码
RestfulClient.cs
public class RestfulClient
{
private static HttpClient client;
private static string BASE_URL = "http://localhost:8080/";
static RestfulClient()
{
client = new HttpClient();
client.BaseAddress = new Uri(BASE_URL);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
public async Task<string> addition(int firstNumber, int secondNumber)
{
try
{
var endpoint = string.Format("addition/{0}/{1}", firstNumber, secondNumber);
var response = await client.GetAsync(endpoint);
return await response.Content.ReadAsStringAsync();
}
catch (Exception e)
{
HttpContext.Current.Server.Transfer("ErrorPage.html");
}
return null;
}
}
ApiController.cs
public class ApiController : Controller
{
private RestfulClient restfulClient = new RestfulClient();
public async Task<ActionResult> Index()
{
int firstNumber = 9;
int secondNumber = 6;
var result = await restfulClient.addition(firstNumber, secondNumber);
return Content(result);
}
}
Java Web服务代码
AdditionController.java
@RestController
public class AdditionController {
private static final String template = " %s";
private static int getSum;
@RequestMapping("/addition/{param1}/{param2}")
@ResponseBody
public Addition addition
(@PathVariable("param1") int firstNumber,@PathVariable("param2") int secondNumber) {
return new Addition(
(String.format(template, firstNumber)), String.format(template, secondNumber));
}
}
有人请帮助我提前谢谢你。
我想做的是,当我运行ASP.NET Web API时,我应该能够在ASP.NET Web API的URL中输入参数( http:// localhost:55223 / addition / 9/6 )
Web API使用许多约定,并且如果您玩得很好,则说明一切正常。 您需要做的第一件事是像这样重命名控制器:
public class AdditionController : ApiController
{
public async Task<IHttpActionResult> Get(int firstNumber, int secondNumber)
{
var result = await restfulClient.addition(firstNumber, secondNumber);
return Ok(result);
}
}
您会在上面的代码中注意到几件事:
AdditionController
。 当您在网址中键入add时,路由引擎将查找名为Addition
+单词Controller
。 ApiController
而不是Controller
。 Get
操作。 如果你犯了一个GET请求,API路由引擎将搜索的命名动作Get
或开始Get
。 因此它将找到此动作。 IHttpActionResult
。 为何在这里查看我的答案。 Ok
的扩展方法来返回200的HTTP状态代码。这将遵循良好的安全性准则和HTTP准则。 您可以像这样调用上面的代码:
http://localhost:55223/addition?firstNumber=1&secondNumber=6
如果您希望能够这样调用它:
http://localhost:55223/addition/9/6
然后,您需要对WebApiConfig类进行一些更改。 将此代码添加到DefaultApi的代码之前:
config.Routes.MapHttpRoute(
name: "AdditionApi",
routeTemplate: "api/addition/{firstNumber}/{secondNumber}",
defaults: new { action = "Get", controller = "Addition" }
);
上面我们告诉路由引擎:嗨,路由引擎,如果url包含api / addition一词,后跟一个变量和另一个变量,请使用Addition控制器的Get方法*。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.