2016-10-27 88 views
0

我想通过在GET请求中提供IP地址来获取资源。Web API - 通过IP地址获取资源

/api/computers/ip/192.168.10.90 - throws 404 error 

/api/computers/ip/192~168~10~90 - hits the method 

它看起来像提供IP是这里的问题。那么如何将IP作为GET请求的一部分来传递?

+0

显示API方法。你正在使用什么类型的参数? – Fabio

+0

[HttpGet] [Route(“computers/ip/{ip}”)] public IHttpActionResult GetComputer(string ip) –

回答

0

这样做的一种方法是编码IP地址并将其作为查询字符串值传递。 你的方法将是

[Route("computers/ip")] 
public IHttpActionResult GetComputer(string ip) 

你发送请求:... /计算机/ IP:= [theEncodedIP]

您可以从该方法去除/ IP Route

[Route("computers")] 
public IHttpActionResult GetComputer(string ip) 

你发送请求使用:... /电脑?ip = [theEncodedIP]

0

你必须传递编码形式的IP,但在查询字符串中的Get请求。你也可以通过HTTP handlers来做到这一点,所以如果请求符合条件,你可以在请求发送到服务器之前使用你的逻辑。

有些链接建议在Web.Config中设置runAllManagedModulesForAllRequests true。

<modules runAllManagedModulesForAllRequests="true"> 

启用RunAllManagedModulesForAllRequests将使所有请求所有管理模块。所以像图片,PDF和其他一切资源在不需要的时候会被服务器处理。