一、问题
在我进行测试聚合数据中手机号码归属地(手机号码归属地查询接口_免费API数据接口 - 聚合数据聚合数据提供全国移动、联通、电信等手机号码归属地接口,根据手机号码或手机号码的前7位,查询手机号码归属地信息,如省份 、城市、运营商等。https://www.juhe.cn/docs/api/id/11)的时候,我出现了下图中的一个报错信息:
当我翻译完之后,原来是说我找不到我这个resource的下的这个方法名,大家也可以从上图发现,其实都是正确的,我用的是路径传参,但当我经过测试,发现,一个很细小的点没有注意到,困扰了我很久。
二、解决方法:
这个解决方法就是:把路径传参转换成问号传参
我的错误原因也是:在我的情况下,手机号码归属地查询接口可能原本设计为接受路径传参(如/api/phone/{phoneNumber}
),但由于某些原因(如API设计变更、服务器配置问题等),路径传参的方式不再被支持或正确解析。将路径传参转换为问号传参(如/api/phone?phone={phoneNumber}
)后,请求能够成功,因为服务器现在能够正确解析查询字符串中的参数。
三、路径传参与问号传参的区别:
路径传参(Path Parameters)
- 位置 :路径传参位于URL的路径部分(即
/
分隔的部分),它们通常是URL模板中的一部分,用于动态指定资源的位置或标识符。 - 用途:路径传参用于指定请求的资源本身,例如,在RESTful API中,通过路径传参可以指定要操作的具体资源实例。
- 处理方式:服务器根据路径传参来定位资源,通常这些参数在服务器端被用于路由或查找数据库中的记录。
- 示例 :假设有一个API用于获取特定用户的信息,URL可能是
https://api.example.com/users/{userId}
,其中{userId}
就是路径传参,表示用户ID。
问号传参(Query Parameters)
- 位置 :问号传参位于URL的查询字符串部分,即URL中
?
后面的部分。它们以键值对的形式出现,多个参数之间用&
分隔。 - 用途:问号传参用于提供对资源的额外信息或选项,它们不改变请求的资源本身,而是改变资源的表现或处理方式。
- 处理方式:服务器通常将问号传参作为请求的一部分进行处理,可能用于过滤结果、排序、分页等。
- 示例 :
https://api.example.com/users?page=2&limit=10
,这里page
和limit
就是问号传参,分别用于指定请求的页码和每页的记录数。
四、总结:
选择路径传参还是问号传参,通常取决于API的设计和需求。路径传参更适合用于指定资源本身,而问号传参则更适合用于对资源的操作进行细化或定制。在具体情况下,根据API的实际要求和服务器配置,选择合适的传参方式非常重要。